Программа для перевода из одной системы счисления в другую - 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 для перевода числа из одной системы счисления в другую.
- Результат выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д