Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
Veronika_de
1 / 1 / 1
Регистрация: 29.04.2016
Сообщений: 78
1

наибольшее число подряд идущих элементов

03.01.2017, 01:29. Просмотров 586. Ответов 4
Метки c++ (Все метки)

Задача вроде не сложная, но что-то не так. HELP! Дана последовательность натуральных чисел, завершающаяся числом 0. Определите, какое наибольшее число подряд идущих элементов этой последовательности равны друг другу.
Формат входных данных
Вводится последовательность натуральных чисел, оканчивающаяся числом 0 (само число 0 в последовательность не входит, а служит как признак ее окончания).
Формат выходных данных
Выведите ответ на задачу.
Sample Input:
1
7
7
9
1
0
Sample Output:
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
26
27
28
29
#include <iostream>
using namespace std;
int main() {
    int a, now;
    int i = 1;
    cin >> now;
    while (now != 0) {
        a = now;
        cin >> now;
        if (now == 0)
        {
            break;
        }
        else if (now == a) {
            i++;
        }
        else if (now < a) {
            i = 1;
        }
        else if (now > a) {
            a = now;
            i = 1;
        }
    }
    if (i >= 2) {
        cout << i;
    }
    else { return -1; }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2017, 01:29
Ответы с готовыми решениями:

Найти в массиве наибольшее число подряд идущих одинаковых элементов
#include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include &lt;iostream&gt; #include&lt;conio.h&gt;...

Найти в массиве наибольшее число подряд идущих одина*ковых элементов.
Народ надо решить задачку...на простом СИ! Кто поможет буду благодарен... ...

Определить какое наибольшее число подряд идущих элементов последовательности равны друг другу
Добрый вечер, решил задачку, но выдаёт ошибку на пятом тесте. У меня два...

Определить, какое наибольшее число подряд идущих элементов этой последовательности равны друг другу.
Дана последовательность натуральных чисел, завершающаяся числом 0. Определить,...

Составить программу, которая подсчитывает, наибольшее число отрицательных идущих подряд в массиве чисел
Добрый день,я составил программу по такому условию :&quot;Дан одномерный массив А,...

4
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7078 / 3382 / 458
Регистрация: 04.12.2011
Сообщений: 9,405
Записей в блоге: 5
03.01.2017, 02:40 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>
using namespace std;
int main(int argc, char* argv[])
{   
    int prev=0, current, max_elements=0,  count=0;
    while(true){
        cout<<"enter the number ";
        cin>>current;
        if(!current)break;
        if(current==prev){
 count++;
        }else{
            if(count){
                if(count>max_elements)max_elements=count;
                count=0;
            }
        }
 prev=current;
    };
 
cout<<endl;
cout<<max_elements+1<<endl;
system("pause");
return 0;
}
1
Veronika_de
1 / 1 / 1
Регистрация: 29.04.2016
Сообщений: 78
03.01.2017, 03:17  [ТС] 3
Cпасибо за ответ! Жаль, что Ваш код мне еще сложно понять. Решила так:

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
#include <iostream>
using namespace std;
int main() {
    int a, b;
    int max = 1;
    int i = 1;
    cin >> a;
    cin >> b;
    while (b != 0) {
        if (a == b) {
            i++;
        }
        else if (a != b) {
            if (i > max) {
                max = i;
                i = 1;
            }
            else {
                i = 1;
            }
        }
            a = b;
            cin >> b;
        
    }
        if (max > i) {
            cout << max;
        }
        else { cout << i; }
        
        return 0;
    
}
0
Fixer_84
1149 / 719 / 690
Регистрация: 30.04.2016
Сообщений: 2,430
03.01.2017, 20:16 4
Veronika_de, здравствуйте! А что массив использовать нельзя? Я решил через массив. Хотя, конечно, уметь обходится без массивов в таких случаях, я считаю, обязанность каждого программиста. Да и на многих сайтах с задачами просто просят не использовать массив Вот мой код, для разнообразия:

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
#include <iostream>
#include <climits>
 
using namespace std;
 
int main()
{
    int A[100], N, M, max, k;
    N = 0;
    do
    {
        cin >> M;
        A[N] = M;
        N++;
    } while (M != 0);
    max = INT_MIN;
    k = 0;
    for (int i = 0; i < N - 1; i++)
    {
        if (A[i+1] == A[i])
        {
            k++;
        }
        else
            k = 0;
        if (k > max)
            max = k;
    }
    cout << ++max << endl;
    system("pause");
    return 0;
}
1
Veronika_de
1 / 1 / 1
Регистрация: 29.04.2016
Сообщений: 78
03.01.2017, 21:20  [ТС] 5
Спасибо) А я так еще не умею)
0
03.01.2017, 21:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.01.2017, 21:20

Вывести наибольшее число одинаковых подряд стоящих элементов
Ввести с клавиатуры массив целых чисел. Вывести наибольшее число одинаковых...

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

Наибольшее количество идущих подряд букв текста
Привет. Помогите разобраться. Задача: Дан текст, который пользователь должен...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru