Перевести числа из одной системы счисления в другую - C (СИ)
Формулировка задачи:
Позиционные системы счисления
Напишите программу, которая умеет переводить числа из одной системы счисления в другую.
_______________________________________________________________
На входе
В первой строке указаны два целых числа, B и C, которые определяют основания систем счисления для перевода (исходную и финальную), 2 ≤ B,C ≤ 36. Вторая строка является представлением целого числа A в исходной системе счисления с основанием B (0 ≤ A ≤ 109). В качестве знаков используются десятичные цифры от 0 до 9 и, при необходимости, заглавные латинские буквы от A до Z со стандартными значениями от 10 до 35._______________________________________________________________
На выходе
Строка из цифр от 0 до 9 и, при необходимости, заглавных латинских букв от A до Z, задающая представление числа A в финальной системе счисления с основанием C._______________________________________________________________
Пример№1
На входе
10 2 12На выходе
1100_______________________________________________________________
Пример №2
На входе
16 8 A53FНа выходе
122477Решение задачи: «Перевести числа из одной системы счисления в другую»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main(void)
{
int A, B, C;
char s[20], *p, i;
scanf("%i%i", &B, &C);
scanf("%s", s);
for (A = 0, p = s; *p; p++)
{
if ('0' <= *p && *p <= '9')
i = *p - '0';
else
if ('A' <= *p && *p <= 'Z')
i = *p - 'A' + 10;
else
i = 0;
A = B*A + i;
}
_itoa(A, s, C);
printf("%s\n", s);
_getch();
return 0;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с функциями ввода-вывода и строками
- Определяем функцию main, в которой будут выполняться все действия программы
- Объявляем переменные A, B, C типа int для хранения чисел, а также переменную s типа char для хранения строки
- С помощью функции scanf считываем два числа (B и C) и строку (s)
- Используя цикл for, перебираем каждый символ в строке s
- Проверяем, является ли текущий символ числом (от '0' до '9') или буквой (от 'A' до 'Z')
- Если символ является числом, то преобразуем его в числовое значение и добавляем к переменной A
- Если символ является буквой, то преобразуем его в числовое значение (от 'A' до 'Z' соответствуют числам от 10 до 35) и добавляем к переменной A
- После обработки всех символов, преобразуем значение переменной A в строку с помощью функции _itoa
- Выводим полученную строку на экран
- Ждем нажатия клавиши с помощью функции _getch
- Завершаем программу с кодом 0, указывающим на успешное выполнение