4 / 4 / 0
Регистрация: 26.06.2016
Сообщений: 115
1

Поиск самой длинной цепочки из подряд идущих одинаковых элементов в массиве

26.06.2016, 23:21. Показов 4414. Ответов 4
Метки нет (Все метки)

Помогите пожалуйста решить программу. Если можно как можно проще используя только циклы, ветвления , массивы и переменные.

Сам не могу понять как задать правильно условия чтобы
Вот мой вариант он неправильный, а на большее пока голова совсем не варит
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
 
void main()
{
    setlocale(LC_ALL, "RUS");
    cout << "Введите количество элементов в массиве -> ";//Просим пользователя ввести количество элементов масива
    int N;
    cin >> N;
    srand(time(NULL));
    int mas[100],
        masX[100];
 
    int count = 0,
        a = 0,
        b = 0,
        c = 0,
        masA = 0,
        masB = 0,
        masC = 0;
    for (int i = 0; i < N; i++)
    {
        cin >> mas[i];
    }
    cout << "Исходный массив равен:  ";
    for (int i = 0; i < N; i++)
    {
        cout << mas[i] << " "; 
    }
    cout << "\n";
    for (int i = 0; i < N; i++)
    {
        for (int j = i+1; j < N; j++)
        {
            if (mas[i] == mas[j])
            {
                count++;
            }
        }
        if (count != 0 && a == 0)
        {
            a = count;
            masA = mas[i];
        }
        else if (count != 0 && b == 0)
        {
 
            b = count;
            masB = mas[i];
        }
        else if (b >= a && b != 0 && a != 0)
        {
            c = b;
            b = 0;
            masC = masB;
            masB = 0;
        }
        else if (a > b && b != 0 && a != 0)
        {
            c = a;
            a = 0;
            masC = masA;
            masA = 0;
        }
    }
    if (a >= b)
    {
        for (int i = 0; i < a; i++)
        {
            masX[i] = masC;
            cout << masX[i] << " ";
        }
    }
    else
    {
        for (int i = 0; i < b; i++)
        {
            masX[i] = masC;
            cout << masX[i] << " ";
        }
    }
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.06.2016, 23:21
Ответы с готовыми решениями:

Напишите функцию поиска самой длинной цепочки из подряд идущих одинаковых элементов в массиве
Напишите функцию поиска самой длинной цепочки из подряд идущих одинаковых элементов в массиве

Определить длину самой длинной цепочки идущих подряд одинаковых чисел
в файле в столбик записаны целые числа, сколько их-неизвестно. Напишите программу, которая...

Найти длину самой длинной цепочки одинаковых чисел, идущих подряд
В файле data.txt записаны числа, сколько их – неизвестно. Найти длину самой длинной цепочки...

Найти длину самой длинной цепочки одинаковых чисел, идущих подряд в файле
2)Найти длину самой длинной цепочки одинаковых чисел, идущих подряд в файле input1.txt . Количество...

4
836 / 639 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
27.06.2016, 10:46 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
 
int main(void){ 
    int a[] = { 0, 1, 2, 3, 4, 5,5,5,5, 6, 7, 8, 9 };
    int n   = sizeof(a)/sizeof(a[0]);
 
    int i = 1, j = 1, m = 1, p = -1;
    do {
        if((i < n) && (a[i - 1] == a[i]))
            ++j;
        else if(j > 1){
            if(j > m){
                m = j;
                p = i - j;
            }
            j = 1;
        }
    } while(i++ < n);
 
    if(p != -1)
        std::cout << a[p] << '(' << m << ')' << std::endl;
    else
        std::cout << "error find!" << std::endl;
    return 0;
}
0
4 / 4 / 0
Регистрация: 26.06.2016
Сообщений: 115
27.06.2016, 22:31  [ТС] 3
Извините все равно не ясно. Понимаю что может наглею, но не понимаю ваш код. Можете просто с помощью циклов и без sizeof и т.д. Т.е. циклы, массиы, операторы ввода вывода, переменные , if но не функции. И не могли бы добавить комментарии а то просто затуп сильный так и не понимаю ваш код и как решили задачу.
0
4 / 4 / 0
Регистрация: 26.06.2016
Сообщений: 115
04.07.2016, 22:16  [ТС] 4
Геомеханик, Здравствуйте, я понимаю вы ответили скорее всего по доброте душеной но не могли бы вы подробно с комментами написать, а то я половины не понимаю. Неделю сижу над вашим решением и не понимаю. Оно то работает но почему не знаю. Особенно непонятно что с переменной j почему потом присваевается ей значение 1 , разбирался но так и не понял.
0
10 / 11 / 7
Регистрация: 11.05.2016
Сообщений: 113
04.07.2016, 23:50 5
АнатолийШ, все это делается намного проще зачем все было так усложнять, можно просто создать еще один доп массив, проверять условие a[i] == a[i+1] записывать в доп массив,выстраивая при этом цепочку, далее добавить условие а что если a[i] != a[i + 1], тогда что делать, надо будет проверять, где больше вышло, вот и все. Полученный массив и будет длинной цепочкой.

Или можно сначала по счетчику пробежаться, посмотреть в каких индексах счетчик самый большой и элементами по этим индексам заполнить доп массив.

Способов решения очень много.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.07.2016, 23:50
Помогаю со студенческими работами здесь

Найти длину самой длинной цепочки одинаковых чисел, идущих подряд, и записать её в файл
var f: text; nm, cm, n, c, t: integer; begin assign(f, 'd:\input.txt'); reset(f); cm...

Напишите программу которая определяет длину самой длинной цепочки идущих подряд одинаковых чисел
В файле в столбик записаны целые числа, сколько их - неизвестно. Напишите программу которая...

Найти длину самой длинной цепочки одинаковых чисел, идущих подряд, и записать её в файл output.txt
В файле data.txt записаны числа, сколько их – неизвестно. Найти длину самой длинной цепочки...

Определить длину самой длинной цепочки идущих подряд одинаковых чисел и вывести результат в другой файл
В файле в столбик записаны целые числа, сколько их – неизвестно. Напишите программу, которая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru