Программа для перевода из одной системы счисления в другую - C (СИ)
Формулировка задачи:
Пользователь задает 3 параметра: число в p-чной системе счисления, p, и систему счисления, в которую нужно перевести число. Находил на форуме исходники данной программы, но они все были на С++ с примочками, которых нет на С. Помогите, пожалуйста.
Решение задачи: «Программа для перевода из одной системы счисления в другую»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <string.h> char *convert(char *value, int sorce, int target) { char *pos, *temp; long number = 0; int digit; pos = value; while(*pos++ = toupper(*pos)) ; pos = value; while(*pos) { if ((*pos >= '0') && (*pos <= '9')) { if ((*pos - '0') >= sorce) { puts("incorrect value"); exit(1); } number = *pos - '0' + number * sorce; } if ((*pos >= 'A') && (*pos <= 'Z')) { if ((*pos-'A' + 10) >= sorce) { puts("incorrect value"); exit(1); } number = *pos - 'A' + 10 + number * sorce; } ++pos; } pos = value; while(number) { digit = number % target; if (digit < 10) *pos = digit + '0'; else *pos = digit + 'A' - 10; number /= target; ++pos; } *pos = '\0'; --pos; temp = value; while (pos > temp) { digit = *pos; *pos = *temp; *temp = digit; --pos; ++temp; } return value; } int main(void) { int sorce, target; char value[25]; printf("value : "); scanf("%24s", value); do { printf("sorce (2 - 35): "); scanf("%i", &sorce); } while (sorce < 2 && sorce > 35); do { printf("target (2 - 35): "); scanf("%i", &target); } while (target < 2 && target > 35); printf("result: %s\n", convert(value,sorce,target)); return 0; }
Объяснение кода листинга программы
- В функции convert происходит перевод числа из одной системы счисления в другую.
- Передаются три параметра: char *value - значение числа, int sorce - исходная система счисления, int target - целевая система счисления.
- Происходит проход по исходному значению, проверяется каждый символ на принадлежность к определенной системе счисления.
- Если символ принадлежит системе счисления sorce, то он преобразуется в десятичное число и добавляется к номеру.
- Если символ принадлежит системе счисления target, то он заменяет текущий символ в строке.
- Происходит проход по полученному числу в системе счисления target, где каждый символ преобразуется обратно в символ соответствующей системы счисления.
- В функции main происходит считывание исходного значения, выбор исходной и целевой систем счисления.
- Вызывается функция convert для перевода числа из одной системы счисления в другую.
- Результат выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д