Найти наиболее длинную последовательность нулей - C (СИ)
Формулировка задачи:
Добрый день. Помогите написать программу,пожалуйста.
Вот задание :
Числа вводятся с клавиатуры до первого отрицательного числа. Написать программу,
которая находит номера начала и конца наиболее длинной последовательности нулей
Решение задачи: «Найти наиболее длинную последовательность нулей»
textual
Листинг программы
int i=0, n=-1, k=-1, a, L=0, Lt=0, nt=-1, kt=-1, flag=0; while (1) { scanf("%d", &a); if (a < 0) break; if (a==0) { if (flag==0) { nt = i; Lt = 1; } else Lt++; flag = 1; kt = i; if (Lt > L) { L = Lt; n = nt; k = kt; } } else flag = 0; i++; } if (n < 0) printf( "Нет нулей\n"l; else printf("Beg=%d End=%d L=%d\n", n, k, L);
Объяснение кода листинга программы
- Переменная
i
инициализируется как 0 и используется для отслеживания текущего индекса. - Переменная
n
инициализируется как -1 и используется для определения конца последовательности нулей. - Переменная
k
инициализируется как -1 и используется для определения первого индекса последовательности нулей. - Переменная
a
используется для хранения каждого введенного числа. - Переменная
L
инициализируется как 0 и используется для подсчета количества нулей до текущего индекса. - Переменная
Lt
инициализируется как 0 и используется для подсчета длины наибольшей последовательности нулей до текущего индекса. - Переменная
nt
инициализируется как -1 и используется для хранения индекса первого нуля в текущей наибольшей последовательности. - Переменная
kt
инициализируется как -1 и используется для хранения индекса последнего нуля в текущей наибольшей последовательности. - В цикле while(1) происходит считывание каждого числа с помощью функции
scanf()
. Если число отрицательное, цикл прерывается. - Если число равно 0, то проверяется, является ли текущая последовательность нулей наибольшей. Если да, то обновляются значения переменных
nt
,kt
,Lt
,L
,n
иk
. - Если число не равно 0, то флаг устанавливается в 0, чтобы начать подсчет новой последовательности нулей.
- Переменная
i
увеличивается на 1 после каждой итерации цикла. - Если
n
меньше 0, то выводится сообщениеНет нулей
. - Если
n
больше или равно 0, то выводится сообщениеBeg
,End
иL
, гдеBeg
- это первый индекс,End
- последний индекс иL
- длина наибольшей последовательности. Следует отметить, что код не обрабатывает ошибки, связанные с вводом пользователя, и предполагает, что пользователь будет вводить только числа.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д