Найти числа, десятичная запись которых есть строго возрастающая или строго убывающая последовательность - C (СИ)

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

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

Добрый день. Хочу попросить помощи в составлении алгоритма, так как сам не могу ничего придумать. Задача такова: Найти все натуральные числа, не превосходящие заданного N, десятичная запись которых есть строго возрастающая или строго убывающая последовательность цифр.

Решение задачи: «Найти числа, десятичная запись которых есть строго возрастающая или строго убывающая последовательность»

textual
Листинг программы
  1. #include <stdio.h>
  2. int func(int a)
  3. {
  4.     int t, t1, t2;
  5.     t1=a%10;
  6.     a/=10;
  7.     t2=a%10;
  8.     if(t1<t2)
  9.         t=1;
  10.     else
  11.         if(t1>t2)
  12.             t=0;
  13.         else
  14.             return 0;
  15.     while(a/10)
  16.     {
  17.         t1=t2;
  18.         a/=10;
  19.         t2=a%10;
  20.         if(t1>=t2 && t==1)
  21.             return 0;
  22.         if(t1<=t2 && t==0)
  23.             return 0;
  24.     }
  25.     return 1;
  26. }
  27. int main()
  28. {
  29. int N;
  30.  
  31.   scanf("%d",&N);
  32.   for(int i=10; i<N; i++)
  33.       if(func(i))
  34.           printf("%d\n", i);
  35.  
  36.  
  37.     return 0;
  38. }

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

В этом коде определена функция с именем func, которая принимает целое число в качестве входного параметра. Внутри функции происходит деление этого числа на 10 и сохранение остатка в переменной t1. Затем число делится на 10 еще раз, и сохраняется новый остаток в переменной t2. Если t1 меньше t2, то число является возрастающей последовательностью, и переменная t устанавливается равной 1. Если t1 больше t2, то число является убывающей последовательностью, и переменная t устанавливается равной 0. Если t1 равно t2, то число не является ни возрастающей, ни убывающей последовательностью, и функция возвращает 0. Затем в функции начинается цикл while, который продолжается до тех пор, пока число не станет однозначным (делится на 10 без остатка). Внутри цикла происходит обновление t1 и t2, а также проверка условий для определения типа последовательности. Если число является возрастающей последовательностью и t равно 1, или если число является убывающей последовательностью и t равно 0, то функция возвращает 0. В функции main() считывается число N от пользователя. Затем в цикле for выполняется проверка функции func для каждого числа от 10 до N-1. Если функция func возвращает 1, то это число выводится на экран. Код, представленный в этом списке, выполняет следующие действия:

  1. Включает заголовочный файл stdio.h, который содержит функции ввода-вывода.
  2. Определяет функцию func с типом int, которая принимает int в качестве аргумента.
  3. Внутри функции func происходит деление введенного числа на 10 и сохранение остатка в переменной t1.
  4. Число делится на 10 еще раз, и сохраняется новый остаток в переменной t2.
  5. Если t1 меньше t2, то переменная t устанавливается равной 1. Если t1 больше t2, то переменная t устанавливается равной 0. Если t1 равно t2, то функция возвращает 0.
  6. Затем в функции начинается цикл while, который продолжается до тех пор, пока число не станет однозначным.
  7. Внутри цикла происходит обновление t1 и t2, а также проверка условий для определения типа последовательности.
  8. Если число является возрастающей последовательностью и t равно 1, или если число является убывающей последовательностью и t равно 0, то функция возвращает 0.
  9. В функции main() считывается число N от пользователя.
  10. Затем в цикле for выполняется проверка функции func для каждого числа от 10 до N-1.
  11. Если функция func возвращает 1, то это число выводится на экран.
  12. Функция main() возвращает 0, чтобы указать, что она успешно завершилась.

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


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

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

5   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы