Найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц - 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;
        }

Объяснение кода листинга программы

В этом коде происходит следующее:

  1. Объявляются три переменные: c, max и nc.
  2. Переменная max инициализируется значением 0. Она будет использоваться для отслеживания максимальной длины непрерывной цепочки нулей.
  3. В цикле while происходит чтение символа из файла, пока не будет достигнут конец файла (EOF).
  4. Если прочитанный символ равен '0', то начинается внутренний цикл while, который будет выполняться, пока следующий символ также равен '0'.
  5. Внутри внутреннего цикла переменная nc инициализируется значением 1 и увеличивается на 1 на каждой итерации.
  6. Когда внутренний цикл завершается (т.е. когда встречается символ, отличный от '0'), проверяется, является ли текущая длина непрерывной цепочки нулей больше, чем максимальная длина, отслеживаемая переменной max.
  7. Если это так, то значение переменной max обновляется значением переменной nc.
  8. После завершения внешнего цикла while возвращается 0, что означает, что была достигнута конечная часть файла. В итоге, после выполнения этого кода, переменная max будет содержать длину самой длинной непрерывной цепочки нулей в файле.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5
Похожие ответы