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

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

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

Условие:Описать функцию InvertDigits(K), меняющую порядок следования цифр целого положительного числа K на обратный (K — параметр целого типа, являющийся одновременно входным и выходным). С помощью этой процедуры поменять порядок следования цифр на обратный для каждого из пяти данных целых чисел.
//---------------------------------------------------------------------------
 
#include <stdio.h>
#include <conio.h>
#include <math.h>
//---------------------------------------------------------------------------
int invertdigits(int);
 
int main()
{  int n1,n2,n3,n4,n5;
   int new;
   printf("Vvedite n1\n");
   scanf("%d",&n1);
   printf("Vvedite n2\n");
   scanf("%d",&n2);
   printf("Vvedite n3\n");
   scanf("%d",&n3);
   printf("Vvedite n4\n");
   scanf("%d",&n4);
   printf("Vvedite n5\n");
   scanf("%d",&n5);
     getch();
    return 0;
}
int invertdigits(int k)
{int x;
 x=0;
 while (k)
 {x=x*10+k % 10;
 k/=10;
 }
 return x;
 }
//---------------------------------------------------------------------------
Всем спасибо кто уделил время!!!

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

textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdint.h>
#include <math.h>
 
// гениальная функция разворота строки
void reverse_str(char *_str, int _len)
{
    if(_len > 1) reverse_str((*_str ^= _str[_len - 1] ^= *_str ^= _str[_len - 1], ++_str), _len - 2);
}
 
size_t calculate_digits(size_t _x)
{
    return (size_t)(log(_x)/log(10)) + 1; // сколько же цифр максимально может содержать unsigned int?
}
 
//краткое описание: число в строку->вертим строку->строку в число->все счастливы
size_t invert_digits(size_t _x)
{
    char *buf;
    size_t result;
 
    buf = malloc(calculate_digits(UINT32_MAX) + 1);
    sprintf(buf, "%u", _x);
 
    reverse_str(buf, strlen(buf));
 
    result = strtoul(buf, 0, 10);
    free(buf);
 
    return result;
}
 
int main()
{
    size_t number;
 
    while("MEDVED")
    {
        printf("Enter number or type \"0\" to exit\n");
        scanf("%u", &number);
 
        if(number)
        {
            number = invert_digits(number);
            printf("Razvorot: %u \n", number);
        }
        else
            break;
    }
 
    return 0;
}

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

  1. Включаем необходимые заголовочные файлы для работы с целочисленными значениями, строками и математическими функциями
  2. Определяем функцию reverse_str, которая меняет порядок символов в строке
  3. Создаем функцию calculate_digits, которая вычисляет максимальное количество цифр, которое может содержать unsigned int
  4. Создаем функцию invert_digits, которая преобразует число в строку, меняет порядок символов в строке и преобразует строку обратно в число
  5. В функции main считываем число с помощью scanf и вызываем функцию invert_digits для его инвертирования
  6. Выводим полученное число на экран
  7. Повторяем шаги 5-6 до тех пор, пока пользователь не введет ноль для выхода из программы

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


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

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

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