Определите длину наибольшего постоянного участка последовательности - C (СИ)
Формулировка задачи:
Доброго времени суток!
Помогите написать код для задачи: Определите длину наибольшего постоянного участка, т.е. максимальное количество подряд идущих элементов с одним и тем же значением.
Проверять входной файл на пустоту не нужно, но если файл есть, а последовательность просто не введена, должен выводиться 0.
Решение задачи: «Определите длину наибольшего постоянного участка последовательности»
textual
Листинг программы
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() { FILE *f; char c, t; int k, j; f = fopen("1.txt", "r"); if (!f) { perror("1.txt"); getchar(); return; } c = fgetc(f); j = k = 1; while ((t = fgetc(f)) != EOF) { if (c == t) { k++; if (k > j) j = k; } else { c = t; k = 1; } } fclose(f); printf("MaxLenght = %d\n",j); return 0; }
Объяснение кода листинга программы
В этом коде используется язык программирования C. Программа открывает файл 1.txt
для чтения и ищет наибольший постоянный участок последовательности. Вот список действий, которые выполняются в коде:
- #define _CRT_SECURE_NO_WARNINGS - Эта строка отключает некоторые проверки безопасности, которые могут быть излишними в этой задаче.
- #include
- Эта строка подключает заголовочный файл stdio.h, который содержит функции для ввода и вывода данных. - int main() - Это функция main(), которая является точкой входа в программу.
- *FILE f;** - Эта переменная объявляет указатель на файл, который будет использоваться для чтения данных из файла
1.txt
. - char c, t; - Эти две переменные используются для хранения символов, которые считываются из файла.
- int k, j; - Эти две переменные используются для подсчета длины наибольшего постоянного участка последовательности.
- f = fopen(
1.txt
,r
); - Эта строка открывает файл1.txt
для чтения. Если файл не может быть открыт, программа выводит сообщение об ошибке и завершается. - if (!f) - Эта строка проверяет, удалось ли открыть файл. Если нет, программа выводит сообщение об ошибке и завершается.
- c = fgetc(f); - Эта строка считывает первый символ из файла и сохраняет его в переменной c.
- j = k = 1; - Эти две строки инициализируют переменные j и k, которые используются для подсчета длины наибольшего постоянного участка последовательности.
- while ((t = fgetc(f)) != EOF) - Эта строка начинает цикл while, который продолжается до тех пор, пока не будет достигнут конец файла (EOF).
- if (c == t) - Эта строка проверяет, совпадает ли текущий символ с предыдущим символом. Если да, то увеличивается значение переменной k.
- { - Эта строка начинается блок кода, который выполняется, если текущий символ совпадает с предыдущим символом.
- k++; - Эта строка увеличивает значение переменной k на 1.
- if (k > j) j = k; - Эта строка проверяет, является ли текущая длина наибольшего постоянного участка последовательности больше, чем предыдущая максимальная длина. Если да, то обновляется значение переменной j.
- } - Эта строка заканчивает блок кода, который выполняется, если текущий символ совпадает с предыдущим символом.
- else - Эта строка начинается блок кода, который выполняется, если текущий символ не совпадает с предыдущим символом.
- { - Эта строка начинается блок кода, который выполняется, если текущий символ не совпадает с предыдущим символом.
- c = t; - Эта строка обновляет значение переменной c, чтобы оно соответствовало текущему символу.
- k = 1; - Эта строка обновляет значение переменной k, чтобы оно снова стало 1.
- } - Эта строка заканчивает блок кода, который выполняется, если текущий символ не совпадает с предыдущим символом.
- fclose(f); - Эта строка закрывает файл
1.txt
. - printf(
MaxLenght = %d\n
,j); - Эта строка выводит на экран длину наибольшего постоянного участка последовательности. - return 0; - Эта строка указывает, что функция main() завершена и возвращает 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д