Вывести в обратном порядке наибольший элемент последовательности - 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;
}

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

Вывод в обратном порядке наибольший элемент последовательности

  1. Вводится функция getMax, которая принимает файловый поток stream и возвращает максимальное значение из последовательности.
  2. Внутри функции getMax переменной max присваивается значение 0, а затем она инициализируется первым числом из потока.
  3. Затем в цикле while считываются числа из потока и сравниваются с текущим максимальным значением. Если число больше текущего максима, то оно становится новым максимальным значением.
  4. После выхода из цикла while функция возвращает текущее максимальное значение.
  5. Вводится функция printRev, которая принимает целое число val и выводит его в обратном порядке.
  6. Внутри функции printRev используется рекурсия для вывода числа в обратном порядке. Если число больше 9, вызывается функция printRev для вывода оставшейся части числа.
  7. В функции main вызывается функция getMax с аргументом stdin, который представляет собой стандартный ввод.
  8. Затем вызывается функция printRev с аргументом, равным результату функции getMax.
  9. Наконец, функция main возвращает 0, что означает успешное завершение программы.

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


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

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

10   голосов , оценка 3.7 из 5
Похожие ответы