Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
24 / 21 / 3
Регистрация: 04.11.2014
Сообщений: 283

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

19.05.2015, 20:55. Показов 1866. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем задача на нахождение самого большого непрерывного участка массива, состоящего из нулей, и вывод индексов его начала и конца. Я составил программу, но она выводит что самый большой участок - это последний и его индексы( То есть если я введу такой массив 1 0 0 0 1 0 0 1 1 1, то программа скажет, что самый большой участок - это состоящий из 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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
 
using namespace std;
 
void zero(double array[])
{
 
    double array2[10] = { 0 };
    int n, a, b, max;
    int k = 0; // счетчик для количества нулей.
 
    for (n = 0; n < 10; n++)
    {
        if (array[n] == 0)
        {
            a = n - k;
            k++;
            b = n;
            max = k;
        }
        else  k = 0;
    }
 
    cout << " Самый длинный участок из нулей равен " << max << "\n";
    cout << " Индекс начала = " << a+1 << "\t окончания = " << b+1 << "\n";
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    int i, n;
    double array[10];
 
    cout << "Добро пожаловать, %username%\n";
cout << "Введите элементы массива:\n";
    for (n = 0; n < 10; n++)
    {
        cin >> array[n];
    }
 
    zero(array);
 
    system("pause");
 
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.05.2015, 20:55
Ответы с готовыми решениями:

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

Нахождение самого большого и самого маленького слова.
Программа убирает все лишние пробелы, а теперь необходимо, чтобы искало слово с самым большим количеством символом и самым маленьким....

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

6
368 / 256 / 65
Регистрация: 22.06.2010
Сообщений: 1,566
19.05.2015, 21:26
ЗеХель, в 19-ой строке поставьте:
C++ (Qt)
1
if(k>max)max = k;
вместо того, что там было и попробуйте ещё раз.

Добавлено через 5 минут
P.S. Не забудьте обнулить max перед использованием.

Добавлено через 3 минуты
Кстати говоря, в алгоритме записи начального/конечного индекса у вас тоже бага, считает неправильно.
0
24 / 21 / 3
Регистрация: 04.11.2014
Сообщений: 283
19.05.2015, 21:27  [ТС]
Цитата Сообщение от Zoominger Посмотреть сообщение
вместо того, что там было
Так если я заменяю, то max не инициализирована становится. А если перед или после ставь, но ничего не меняется.
0
55 / 56 / 34
Регистрация: 29.12.2012
Сообщений: 478
19.05.2015, 21:29
Лучший ответ Сообщение было отмечено ЗеХель как решение

Решение

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
#include <iostream>
 
using namespace std;
 
void zero(int * array,int N)
{
    int k=0,max=0,a,b;
 for (int i = 0; i < N; i++)
    {
        if (array[i] == 0)
        {           
            ++k;
        }
        else
        {
            if(max<k)
             { 
               a=i-k;
               max=k;
               b=i;
             }
            k=0;
        }
    }
    cout << " Самый длинный участок из нулей равен " << max << "\n";
    cout << " Индекс начала = " << a<< "\t окончания = " << b<< "\n";
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int N;
    cout << "\tДобро пожаловать\n";
    cout << "Введите размер массива:\n";
    cin>>N;
    int *array=new int[N];
    for (int i = 0; i < N ; i++)
    {
        cout<<"Элемент["<<i<<"]=";
        cin >> array[i];
    }
    zero(array,N);
    system("pause");
    return 0;
}
Добавлено через 39 секунд
Только я чуток как мне привычнее сделал
0
368 / 256 / 65
Регистрация: 22.06.2010
Сообщений: 1,566
19.05.2015, 21:32
ЗеХель, считало правильно Вон вам уже Черный мечник решение дал, не заморачивайтесь
1
24 / 21 / 3
Регистрация: 04.11.2014
Сообщений: 283
19.05.2015, 21:37  [ТС]
Цитата Сообщение от Zoominger Посмотреть сообщение
не заморачивайтесь
Я не люблю пользоваться полностью чужим кодом, так ничему не научишься. И спасибо за помощь
0
368 / 256 / 65
Регистрация: 22.06.2010
Сообщений: 1,566
19.05.2015, 21:52
ЗеХель, не за что

Не по теме:


Цитата Сообщение от ЗеХель Посмотреть сообщение
Я не люблю пользоваться полностью чужим кодом, так ничему не научишься.
Ох, вот все бы так...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.05.2015, 21:52
Помогаю со студенческими работами здесь

Нахождение самого большого слова в ListBox
Доброго времени суток! Пытаюсь сделать форму для нахождения самого большого слова из listBox1 в listBox3, но при нажатии кнопки на форме...

Нахождение среди трех заданных чисел самого большого отрицательного числа
Народ хотел спросить может кто поможет 5 заданий сделать на программирование на VBA конечно за определенную плату и есть ли на форуме...

Найти номера начального и конечного элементов непрерывного участка последовательности
Найти номера начального и конечного элементов непрерывного участка последовательности целых чисел (положительных и отрицательных), ...

Нахождение максимального нечетного элемента массива, состоящего из 20 целых чисел
3. Составить блок-схему алгоритма и написать программу в консольном приложении в Delphi для нахождения максимального нечетного элемента...

Составить программу нахождения самого большого по модулю элемента массива
Дано масив А(1....m, 1....n) и натуральное число n. Составить программу нахождения самого большого по модулю элемента масива,а также...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru