Определите длину наибольшего постоянного участка последовательности - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток! Помогите написать код для задачи: Определите длину наибольшего постоянного участка, т.е. максимальное количество подряд идущих элементов с одним и тем же значением. Проверять входной файл на пустоту не нужно, но если файл есть, а последовательность просто не введена, должен выводиться 0.

Решение задачи: «Определите длину наибольшего постоянного участка последовательности»

textual
Листинг программы
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include<stdio.h>
  3.  
  4.  
  5. int main()
  6. {
  7.     FILE *f;
  8.  
  9.     char c, t;
  10.     int  k, j;
  11.  
  12.     f = fopen("1.txt", "r");
  13.     if (!f)
  14.     {
  15.         perror("1.txt");
  16.         getchar();
  17.         return;
  18.     }
  19.  
  20.     c = fgetc(f);
  21.     j = k = 1;
  22.  
  23.     while ((t = fgetc(f)) != EOF)
  24.     {
  25.         if (c == t)
  26.         {
  27.             k++;
  28.             if (k > j) j = k;
  29.         }
  30.         else
  31.         {
  32.             c = t;
  33.             k = 1;
  34.         }
  35.     }
  36.  
  37.     fclose(f);
  38.  
  39.     printf("MaxLenght = %d\n",j);
  40.  
  41.     return 0;
  42. }

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

В этом коде используется язык программирования C. Программа открывает файл 1.txt для чтения и ищет наибольший постоянный участок последовательности. Вот список действий, которые выполняются в коде:

  1. #define _CRT_SECURE_NO_WARNINGS - Эта строка отключает некоторые проверки безопасности, которые могут быть излишними в этой задаче.
  2. #include - Эта строка подключает заголовочный файл stdio.h, который содержит функции для ввода и вывода данных.
  3. int main() - Это функция main(), которая является точкой входа в программу.
  4. *FILE f;** - Эта переменная объявляет указатель на файл, который будет использоваться для чтения данных из файла 1.txt.
  5. char c, t; - Эти две переменные используются для хранения символов, которые считываются из файла.
  6. int k, j; - Эти две переменные используются для подсчета длины наибольшего постоянного участка последовательности.
  7. f = fopen(1.txt, r); - Эта строка открывает файл 1.txt для чтения. Если файл не может быть открыт, программа выводит сообщение об ошибке и завершается.
  8. if (!f) - Эта строка проверяет, удалось ли открыть файл. Если нет, программа выводит сообщение об ошибке и завершается.
  9. c = fgetc(f); - Эта строка считывает первый символ из файла и сохраняет его в переменной c.
  10. j = k = 1; - Эти две строки инициализируют переменные j и k, которые используются для подсчета длины наибольшего постоянного участка последовательности.
  11. while ((t = fgetc(f)) != EOF) - Эта строка начинает цикл while, который продолжается до тех пор, пока не будет достигнут конец файла (EOF).
  12. if (c == t) - Эта строка проверяет, совпадает ли текущий символ с предыдущим символом. Если да, то увеличивается значение переменной k.
  13. { - Эта строка начинается блок кода, который выполняется, если текущий символ совпадает с предыдущим символом.
  14. k++; - Эта строка увеличивает значение переменной k на 1.
  15. if (k > j) j = k; - Эта строка проверяет, является ли текущая длина наибольшего постоянного участка последовательности больше, чем предыдущая максимальная длина. Если да, то обновляется значение переменной j.
  16. } - Эта строка заканчивает блок кода, который выполняется, если текущий символ совпадает с предыдущим символом.
  17. else - Эта строка начинается блок кода, который выполняется, если текущий символ не совпадает с предыдущим символом.
  18. { - Эта строка начинается блок кода, который выполняется, если текущий символ не совпадает с предыдущим символом.
  19. c = t; - Эта строка обновляет значение переменной c, чтобы оно соответствовало текущему символу.
  20. k = 1; - Эта строка обновляет значение переменной k, чтобы оно снова стало 1.
  21. } - Эта строка заканчивает блок кода, который выполняется, если текущий символ не совпадает с предыдущим символом.
  22. fclose(f); - Эта строка закрывает файл 1.txt.
  23. printf(MaxLenght = %d\n,j); - Эта строка выводит на экран длину наибольшего постоянного участка последовательности.
  24. return 0; - Эта строка указывает, что функция main() завершена и возвращает 0, что означает успешное выполнение программы.

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


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

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

7   голосов , оценка 3.714 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы