Простая задача на с - C (СИ) (154271)
Формулировка задачи:
Здравствуйте! Помогите пожалуйста написать программу на языке С. "Пусть задан файл целых чисел. Определите максимальную длину последовательности подряд идущих четных его компонент. Описать функцию."
Решение задачи: «Простая задача на с»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
size_t GetMaxLength(FILE* f)
{
size_t count = 0;
size_t max = 0;
int digit;
while (fscanf(f, "%d", &digit) == 1)
{
if ((digit % 2) == 0)
{
count++;
}
else if (count)
{
if (max < count)
{
max = count;
}
count = 0;
}
}
return (max > count) ? max : count;
}
int main(int argc, char* argv[])
{
if (argc != 2)
{
fprintf(stderr, "Usage: program <FILE>\n");
return EXIT_FAILURE;
}
FILE* f = fopen(argv[1], "r");
if (f == NULL)
{
perror(argv[1]);
return EXIT_FAILURE;
}
printf("max length = %d\n", GetMaxLength(f));
fclose(f);
return EXIT_SUCCESS;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
и . - Определяется функция GetMaxLength, которая принимает в качестве аргумента файловый указатель и возвращает размер максимальной длины.
- Внутри функции объявляются переменные count и max, которые используются для хранения текущего количества и максимального количества нечетных чисел соответственно.
- Переменная digit используется для считывания каждого числа из файла.
- В цикле while с помощью функции fscanf считывается каждое число из файла.
- Если число четное, то увеличивается переменная count.
- Если число нечетное и предыдущее количество было больше нуля, то проверяется, является ли текущее количество больше максимального.
- Если текущее количество больше максимального, то обновляется значение переменной max.
- После окончания цикла, функция возвращает максимальное значение из переменной count и max.
- В функции main проверяется корректность использования программы.
- Открывается файл с помощью функции fopen.
- Если файл не может быть открыт, выводится сообщение об ошибке и возвращается EXIT_FAILURE.
- Выводится сообщение с максимальным значением длины.
- Файл закрывается с помощью функции fclose.
- Возвращается EXIT_SUCCESS.