Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
ondgik123
0 / 0 / 0
Регистрация: 08.10.2016
Сообщений: 2
#1

Найти длину самой длинной последовательности подряд идущих элементов массива, равных нулю - C++

08.10.2016, 05:03. Просмотров 514. Ответов 15
Метки нет (Все метки)

Задан одномерный массив. Найти длину самой длинной последовательности подряд идущих элементов массива,равных нулю. Написал на паскале нужно на C++,помогите пожалуйста.
Pascal
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
var
    a: Array[Byte] Of ShortInt;
    i, n, maxCount, count: Byte;
begin
    Write('n='); ReadLn(n);
    Randomize; maxCount := 0; count := 0;
    for i := 0 to n - 1 do
    begin
        a[i] := Random(5) - 2;
        WriteLn(a[i]:3);
        if (a[i] = 0)
        then
            Inc(count)
        else
        begin
            if (count > maxCount)
            then
                maxCount := count;
            count := 0;
        end;
    end;
    if (count > maxCount)
    then
        maxCount := count;
    WriteLn('Max Count: ', maxCount);
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2016, 05:03
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Найти длину самой длинной последовательности подряд идущих элементов массива, равных нулю (C++):

Найти длину самой длинной последовательности подряд идущих нулевых элементов массива
Задан числовой массив A(n). Найти длину самой длинной последовательности подряд...

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

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

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

Создать массив A(n) и найти длину самойдлиной последовательности подряд идущих элементов
Задан числовой массив A.Найти длинну самой длинной последовательности подряд...

Найти место вхождения в строку самой длинной последовательности пробелов и определить ее длину
Доброго времени суток! нужно найти место вхождения в строку самой длинной...

15
MansMI
1447 / 1156 / 549
Регистрация: 08.01.2012
Сообщений: 4,509
08.10.2016, 06:16 #2
и что код работает, можно скриншот?
0
ondgik123
0 / 0 / 0
Регистрация: 08.10.2016
Сообщений: 2
08.10.2016, 07:07  [ТС] #3
С компьютера возможности зайти нет.Вот вывод с онлайн компилятора
0
Миниатюры
Найти длину самой длинной последовательности подряд идущих элементов массива, равных нулю  
DemolitionMan
129 / 155 / 87
Регистрация: 06.04.2016
Сообщений: 992
08.10.2016, 07:18 #4
А Byte - это какое число?
0
MansMI
1447 / 1156 / 549
Регистрация: 08.01.2012
Сообщений: 4,509
08.10.2016, 07:24 #5
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
void main(int argc,char **argv)
{
    short a[sizeof(char)];
    char n, maxCount, count;
 
    cout<<"n="; 
    cin>>n;
    srand(unsigned(time(0))); 
    maxCount=count=0;
    for(int i=0; i<n; i++)
    {
        a[i]=rand()%5-2;
        cout<<a[i]<<endl;
        if (!a[i]) count++;
        else
        {
            if (count > maxCount) maxCount=count;
            count=0;
        }
    }
    if (count > maxCount) maxCount=count;
    cout<<"Max Count: "<<(int)maxCount<<endl;
    system("pause");
}
1
DemolitionMan
129 / 155 / 87
Регистрация: 06.04.2016
Сообщений: 992
08.10.2016, 07:25 #6
C++Builder 6.
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
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream.h>
#include <conio.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
int a[20], i, n, maxcount, count;
 
cout << "n=";
cin >> n;
 
maxcount = 0;
count = 0;
for(i = 0; i < n; i++)
{
    a[i] = rand()%5 - 2;
    cout << a[i] << "\n";
    if(a[i] == 0)
    {
        count++;
    }
    else
    {
        if(count > maxcount)
        {
            maxcount = count;
        }
        count = 0;
    }
}
if(count > maxcount)
{
    maxcount = count;
}
cout << "MaxCount: " << maxcount;
 
getch();
return 0;
}
//---------------------------------------------------------------------------
1
Invader0x7F
Helper C/C++
281 / 158 / 122
Регистрация: 22.09.2016
Сообщений: 518
Завершенные тесты: 5
08.10.2016, 07:34 #7
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;
 
const int N = 12;
 
int main()
{
    int A[N] = { 0, 5, 0, 0, 0, 4, 1, 6, 0, 0, 0, 0 };
 
    for (int index = 0; index < N; index++)
        std::cout << A[index] << " ";
 
    std::cout << endl << endl;
 
    int max_pos = -1, max_len = 0;
    for (int index = 0; index < N; index++)
    {
        int r = index;
        while (A[index] == A[index + 1] &&
            A[index] == 0 && index < N) index++;
 
        if (std::abs(r - index) > max_len || max_pos == -1)
        {
            max_pos = r;
            max_len = std::abs(r - index);
        }
    }
 
    std::cout << "The longest 0 sequence occurence at position: " << max_pos << " with lengh: " << max_len + 1 << endl;
 
    std::cin.get();
}
1
Миниатюры
Найти длину самой длинной последовательности подряд идущих элементов массива, равных нулю  
gru74ik
Модератор
Эксперт CЭксперт С++
4648 / 1962 / 293
Регистрация: 20.02.2013
Сообщений: 5,225
Записей в блоге: 23
08.10.2016, 07:57 #8
Invader0x7F, зачем размер массива делать в глобальной области видимости? Ну вот зачем?

Стив Макконнелл

Начинайте с самой ограниченной области видимости и расширяйте ее только при необходимости
Чтобы минимизировать область видимости переменной, постарайтесь сделать ее как можно более локальной. Область видимости гораздо сложнее сжать, чем расширить — иначе говоря, превратить глобальную переменную в переменную класса сложнее, чем наоборот. Защищенные данные-члены класса также сложнее превратить в закрытые, чем закрытые в защищенные. Так что, если сомневаетесь, выбирайте наименьшую возможную область видимости переменной: попытайтесь сделать переменную локальной для отдельного цикла, локальной для конкретного метода, затем — закрытой переменной класса, затем — защищенной, далее попробуйте включить ее в пакет (если ваш язык программирования поддерживает пакеты) и лишь в крайнем случае сделайте ее глобальной.
0
Invader0x7F
Helper C/C++
281 / 158 / 122
Регистрация: 22.09.2016
Сообщений: 518
Завершенные тесты: 5
08.10.2016, 08:08 #9
C++
1
2
3
4
5
6
7
8
#include <iostream> 
 
using namespace std;
 
int main()
{
    const int N = 12;
    int A[N] = { 0, 5, 0, 0, 0, 4, 1, 6, 0, 0, 0, 0 };
0
Dsasdf
Заблокирован
08.10.2016, 10:32 #10
Цитата Сообщение от Invader0x7F Посмотреть сообщение
int A[N] = { 0, 5, 0, 0, 0, 4, 1, 6, 0, 0, 0, 0 };
for (int index = 0; index < N; index++)
* * * * std::cout << A[index] << " ";
std::cout << endl << endl;
Не правильно работает (введи)
C++
1
0, 2, 3, 2, 0, 0, 3, 0, 0, 0
Добавлено через 4 минуты
var1
C++
1
2
3
4
5
6
   int init[] = {0, 2, 3, 2, 0, 0, 3, 0, 0, 0};
    int max = 0;
    for (int i = 0, count = 0; i < 10; i++)
        if (!init[i]) max = std::max(max, ++count);
        else count = 0;
    cout << max;
var 2
C++
1
2
3
4
5
6
7
8
9
10
   int init[] = {0, 2, 3, 2, 0, 0, 3, 0, 0, 0};
        int* first = init;
        int max = 0;
        while ((first = std::find(first, init + 10, 0)) != init + 10) {
            int* last = std::find_if(first, init + 10, std::bind(std::not_equal_to<int>(), std::placeholders::_1, 0));
            iterator_traits<int*>::difference_type result = std::distance(first, last);
            max = std::max(max, result);
            first = last;
        }
        cout << max;

Не по теме:

gru74ik, вам бы следовало наконец-то обзавестись своим умом, а не заниматься постоянным копированием чужого мнения, на форумах. Принимая чьи-то советы за "истину божью". Если, конечно, это возможно. Удачи.

0
Invader0x7F
Helper C/C++
281 / 158 / 122
Регистрация: 22.09.2016
Сообщений: 518
Завершенные тесты: 5
08.10.2016, 10:32 #11
Ну знаете, что, а размерность вы правильно поставили N = 10 ????

Вот все работает!!!!
0
Миниатюры
Найти длину самой длинной последовательности подряд идущих элементов массива, равных нулю  
Invader0x7F
Helper C/C++
281 / 158 / 122
Регистрация: 22.09.2016
Сообщений: 518
Завершенные тесты: 5
08.10.2016, 10:36 #12
С использованием STL я умею сам, но это здесь не нужно. Пользователь ondgik123 уже поблагодарил за мой ответ, значит этот ответ его устраивает: http://www.cyberforum.ru/cpp-beginners/thread1821569.html#post9621047
0
gru74ik
08.10.2016, 13:28
  #13

Не по теме:


Цитата Сообщение от Dsasdf Посмотреть сообщение
gru74ik, вам бы следовало наконец-то обзавестись своим умом, а не заниматься постоянным копированием чужого мнения, на форумах. Принимая чьи-то советы за "истину божью".
Dsasdf, что за дичь! Мы все копируем, подражаем, заимствуем, опираемся на плечи гигантов, бывших перед нами. Это нормально. И Вы - не исключение. Вы тоже копируете, подражаете, заимствуете. "Иметь свой ум" - это что-то из детских фантазий, типа "ко-ко-ко, я буду не такой, как все". Если только Вы не Будда или Бодхидхарма, которые, если верить дошедшим до нас легендам, избавились от всякой обусловленности.

0
Invader0x7F
Helper C/C++
281 / 158 / 122
Регистрация: 22.09.2016
Сообщений: 518
Завершенные тесты: 5
08.10.2016, 13:30 #14
Не по теме:
Цитата Сообщение от Dsasdf Посмотреть сообщение
gru74ik, вам бы следовало наконец-то обзавестись своим умом, а не заниматься постоянным копированием чужого мнения, на форумах. Принимая чьи-то советы за "истину божью". Если, конечно, это возможно. Удачи.
Что за дичь! Мы все копируем, подражаем, заимствуем, опираемся на плечи гигантов, бывших перед нами. Это нормально. И Вы - не исключение. Вы тоже копируете, подражаете, заимствуете. "Иметь свой ум" - это что-то из детских фантазий, типа "ко-ко-ко, я буду не такой, как все". Если только Вы не Будда или Бодхидхарма, которые, если верить дошедшим до нас легендам, избавились от всякой обусловленности.
К чему это ?? И к кому именно адресован этот пост ????
0
gru74ik
08.10.2016, 13:47
  #15

Не по теме:


Цитата Сообщение от Invader0x7F Посмотреть сообщение
К чему это ??
Отповедь задире.

Цитата Сообщение от Invader0x7F Посмотреть сообщение
к кому именно адресован этот пост ????
Кого цитирую, к тому и адресован.

0
Invader0x7F
Helper C/C++
281 / 158 / 122
Регистрация: 22.09.2016
Сообщений: 518
Завершенные тесты: 5
08.10.2016, 13:51 #16
Понял. спасибо за ответ.
0
08.10.2016, 13:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2016, 13:51
Привет! Вот еще темы с решениями:

Определить длину самой длинной подстроки из подряд стоящих букв «е»
Прошу проверить программу на правильность. Условие: Дана символьная строка....

Найти в последовательности, количество пар подряд идущих отрицательных элементов
Задача звучит так: Найти в последовательности чисел, заданных пользователем с...

Найти количество элементов массива равных нулю
Дан одномерный массив заданный генератором случайных чисел. Найти количество...

Найти количество элементов массива равных нулю
С одномерным массивом, состоящим из n вещественных элементов, произвести...


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

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

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