Вывести в обратном порядке наибольший элемент последовательности - C (СИ)
Формулировка задачи:
По форуму искал нашёл только вывод с массивами, а мне надо без, по этому прошу помощи тут
Имеется последовательность произвольных целых ненулевых чисел, завершающаяся числом 0(число 0 в последовательность не входит). Количество элементов в последовательности заранее неизвестно.Напечатать в обратном порядке наибольший элемент последовательности
Решение задачи: «Вывести в обратном порядке наибольший элемент последовательности»
textual
Листинг программы
#include <stdio.h> int getMax(FILE* stream) { int val, max = 0; if ((fscanf(stream, "%d", &max) == 1) && max) { while ((fscanf(stream, "%d", &val) == 1) && val) { if (max < val) { max = val; } } } return max; } void printRev(int val) { printf("%d", val % 10); if (9 < val) { printRev(val / 10); } } int main() { printRev(getMax(stdin)); return 0; }
Объяснение кода листинга программы
Вывод в обратном порядке наибольший элемент последовательности
- Вводится функция
getMax
, которая принимает файловый потокstream
и возвращает максимальное значение из последовательности. - Внутри функции
getMax
переменнойmax
присваивается значение 0, а затем она инициализируется первым числом из потока. - Затем в цикле
while
считываются числа из потока и сравниваются с текущим максимальным значением. Если число больше текущего максима, то оно становится новым максимальным значением. - После выхода из цикла
while
функция возвращает текущее максимальное значение. - Вводится функция
printRev
, которая принимает целое числоval
и выводит его в обратном порядке. - Внутри функции
printRev
используется рекурсия для вывода числа в обратном порядке. Если число больше 9, вызывается функцияprintRev
для вывода оставшейся части числа. - В функции
main
вызывается функцияgetMax
с аргументомstdin
, который представляет собой стандартный ввод. - Затем вызывается функция
printRev
с аргументом, равным результату функцииgetMax
. - Наконец, функция
main
возвращает 0, что означает успешное завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д