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

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

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

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

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

textual
Листинг программы
#include <stdio.h>
int func(int a)
{
    int t, t1, t2;
    t1=a%10;
    a/=10;
    t2=a%10;
    if(t1<t2)
        t=1;
    else
        if(t1>t2)
            t=0;
        else
            return 0;
    while(a/10)
    {
        t1=t2;
        a/=10;
        t2=a%10;
        if(t1>=t2 && t==1)
            return 0;
        if(t1<=t2 && t==0)
            return 0;
    }
    return 1;
}
int main()
{
int N;
  
  scanf("%d",&N);
  for(int i=10; i<N; i++)
      if(func(i))
          printf("%d\n", i);
 
  
    return 0;
}

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

В этом коде определена функция с именем 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
Похожие ответы