Вывести цифры числа в нормальном и обратном порядке - C (СИ)

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

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

Не могу понять функции. Написал простенький код, а переделать его на функции никак не могу, читаю теорию - вроде все ясно, а практике сильно туплю Переделайте, пожалуйста, мой "код" на функции, что бы в мейне лишь вызовы были и поясните, почему и как работает каждая из ваших функций

Условие:

ввести с клавиатуры некоторое количество чисел и вывести их цифры в нормальном и обратном порядке
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <windows.h>
  4. #define N 100
  5. int main(){
  6. SetConsoleCP(1251);
  7. SetConsoleOutputCP(1251);
  8. char K=0;
  9. char mas[N];
  10. char*p1;
  11. int i=0, kolvo;
  12. printf("Введите количество чисел: ");
  13. kolvo=getche()-48;
  14. printf("\n\n");
  15. do{
  16. fflush(stdin);
  17. p1=mas;
  18. printf("Введите число: ");
  19. K=0;
  20. do{
  21. *p1=getchar();
  22. if(isdigit(*p1))
  23. mas[K++]=*p1;
  24. if(*p1=='\n') break;
  25. }while(++p1<mas+N-1);
  26. *p1='\0';
  27. printf("Нормальный порядок: ");
  28. for(p1=mas;p1<&mas[K];p1++)
  29. printf("%c ",*p1);
  30. printf("\nОбратный порядок: ");
  31. for(p1=&mas[K]-1;p1>=mas;p1--)
  32. printf("%c ",*p1);
  33. printf("\n\n");
  34. }while(++i<kolvo);
  35. getch();
  36. }

Решение задачи: «Вывести цифры числа в нормальном и обратном порядке»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. /* с отрицательными числами не морочимся, активно используем тип unsigned */
  4.  
  5. /* печать по цифре через пробел в "прямом" порядке */
  6. void goahead(unsigned n) {
  7.     if ( n > 9 )
  8.         goahead(n / 10);
  9.     printf("%d ", n % 10);
  10. }
  11.  
  12. /* печать по цифре через пробел в "обратном" порядке */
  13. void upsidedown(unsigned n) {
  14.     printf("%d ", n % 10);
  15.     if ( n > 9 )
  16.         upsidedown(n / 10);
  17. }
  18.  
  19. int main(void) {
  20.     unsigned n;
  21.    
  22.     while ( printf("Number: ") && scanf("%u", &n) == 1 ) {
  23.         printf("Right order: ");
  24.         goahead(n);
  25.         printf("\nReversed order: ");
  26.         upsidedown(n);
  27.         printf("\n");
  28.     }
  29.    
  30.     return 0;
  31. }

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

В этом коде есть две функции: goahead и upsidedown, которые печатают цифры числа в прямом и обратном порядке соответственно. Функция goahead рекурсивно разбивает число на десятки и вызывает саму себя для каждой цифры, пока не будет достигнуто число, которое меньше или равно 10. Затем функция печатает последнюю цифру числа, используя оператор % для получения остатка от деления. Функция upsidedown делает то же самое, но в обратном порядке, сначала печатая последнюю цифру, а затем вызывая саму себя для каждой цифры, пока не будет достигнуто число, которое меньше или равно 10. Функция main считывает число с помощью функции scanf и передает его в функцию goahead, чтобы напечатать цифры числа в прямом порядке, а затем в функцию upsidedown, чтобы напечатать цифры в обратном порядке. Этот процесс повторяется до тех пор, пока пользователь не введет число, которое больше 9.

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


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

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

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

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

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

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