Поменять порядок следования цифр целого положительного числа 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; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с целочисленными значениями, строками и математическими функциями
- Определяем функцию reverse_str, которая меняет порядок символов в строке
- Создаем функцию calculate_digits, которая вычисляет максимальное количество цифр, которое может содержать unsigned int
- Создаем функцию invert_digits, которая преобразует число в строку, меняет порядок символов в строке и преобразует строку обратно в число
- В функции main считываем число с помощью scanf и вызываем функцию invert_digits для его инвертирования
- Выводим полученное число на экран
- Повторяем шаги 5-6 до тех пор, пока пользователь не введет ноль для выхода из программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д