Найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц - C (СИ)
Формулировка задачи:
Требуется найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц.
Входные данные
В единственной строке входного файла INPUT.TXT записана последовательность нулей и единиц (без пробелов). Суммарное количество цифр не превышает 100.
Выходные данные
В единственную строку выходного файла OUTPUT.TXT нужно вывести искомую длину цепочки нулей.
Моя задача выводит 0 при любых входных данных, помогите исправить.
#include <stdio.h> int main() { int c,x,max; FILE *fin, *fout; fin=fopen("input.txt","r"); fout=fopen("output.txt","w"); c = 0; max = 0; while ( !EOF ){ fscanf(fin, "%ld",&x); if (x==0) c = c+1; else c = 0; if (c>max) max = c; } fprintf(fout, "%ld",max); fclose(fin); fclose(fout); return 0; }
Решение задачи: «Найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц»
textual
Листинг программы
int c, max, nc; max = 0; while((c = getc(fin)) != EOF) if(c == '0') { nc = 1; while((c = getc(fin)) == '0') nc++; if(nc > max) max = nc; }
Объяснение кода листинга программы
В этом коде происходит следующее:
- Объявляются три переменные:
c
,max
иnc
. - Переменная
max
инициализируется значением 0. Она будет использоваться для отслеживания максимальной длины непрерывной цепочки нулей. - В цикле
while
происходит чтение символа из файла, пока не будет достигнут конец файла (EOF). - Если прочитанный символ равен '0', то начинается внутренний цикл
while
, который будет выполняться, пока следующий символ также равен '0'. - Внутри внутреннего цикла переменная
nc
инициализируется значением 1 и увеличивается на 1 на каждой итерации. - Когда внутренний цикл завершается (т.е. когда встречается символ, отличный от '0'), проверяется, является ли текущая длина непрерывной цепочки нулей больше, чем максимальная длина, отслеживаемая переменной
max
. - Если это так, то значение переменной
max
обновляется значением переменнойnc
. - После завершения внешнего цикла
while
возвращается 0, что означает, что была достигнута конечная часть файла. В итоге, после выполнения этого кода, переменнаяmax
будет содержать длину самой длинной непрерывной цепочки нулей в файле.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д