Определить, верно ли, что цифры числа следуют в порядке возрастания справа налево - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Дано натуральное число. Верно ли, что его цифры следуют в порядке возрастания справа налево?

Помогите пожалуйста. Буду очень признателен. Все примеры что нашел написаны на Си++, так что толком не могу понять как они работают. Ответ по идее должен быть да, нет, всревно. Нужен код программы на Си. Заранее спасибо.

Решение задачи: «Определить, верно ли, что цифры числа следуют в порядке возрастания справа налево»

textual
Листинг программы
#include <stdio.h>
 
int test_desc(unsigned n) {
    return ( n < 10 ) ? 1 : ( n % 10 < n / 10 % 10 ) ? test_desc(n / 10) : 0;
}
 
int main(void) {
    printf("%u - %s\n", 54321, ( test_desc(54321) ) ? "yes" : "no");
    printf("%u - %s\n", 12345, ( test_desc(12345) ) ? "yes" : "no");
    printf("%u - %s\n", 54331, ( test_desc(54331) ) ? "yes" : "no");
 
    return 0;
}

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

В этом коде определен проходной вариант функции test_desc, который проверяет, является ли число однозначным. Если число однозначное, функция возвращает 1, иначе она рекурсивно вызывает саму себя для чисел, образованных путем деления исходного числа на 10 и остатка от деления. Если остаток от деления меньше, чем результат деления, функция продолжает обходить дерево вызовов до тех пор, пока не найдет однозначное число или пока не будет достигнуто максимальное значение для данного числа. Если функция не завершится успешно, она вернет 0. В функции main() есть три вызова функции test_desc(). Каждый из них использует функцию printf() для вывода результата вызова функции test_desc() вместе с соответствующим числом. Вот список действий в коде:

  1. Включение заголовочного файла stdio.h.
  2. Определение функции test_desc().
  3. Проверка, является ли число однозначным.
  4. Если число однозначное, возврат 1.
  5. Если число больше 10, проверка остатка от деления на 10.
  6. Если остаток от деления меньше, чем результат деления, рекурсивный вызов функции test_desc() для числа, образованного путем деления исходного числа на 10 и остатка от деления.
  7. Если остаток от деления больше или равен результату деления, возврат 0.
  8. В функции main() есть три вызова функции test_desc().
  9. Каждый из вызовов функции test_desc() использует функцию printf() для вывода результата вызова функции test_desc() вместе с соответствующим числом.
  10. Возврат 0 в конце функции main(), что означает успешный конец работы программы.

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


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

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

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