Определите длину наибольшего постоянного участка последовательности - 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 для чтения и ищет наибольший постоянный участок последовательности. Вот список действий, которые выполняются в коде:

  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
Похожие ответы