Перевод числа из любой системы счисления в любую другую - PascalABC.NET
Формулировка задачи:
нужно написать код. Перевод числа из любой системы счисления в любую. Что бы там было основание любой системы счисления, основание целевой системы счисления и результат
желательно самым простым способом, без меню и с комментариями. Буду премного благодарен)))
Решение задачи: «Перевод числа из любой системы счисления в любую другую»
textual
Листинг программы
uses
crt;
var
cs1,cs2,res,change:integer;
TD:string;
{функция перевода Dec числа в любую сс}
function FromDec(n,r:longint):string;
var
s:String;
const
digit:string[16]='0123456789ABCDEF';
begin
s:='';
repeat
s:=digit[(n mod r)+1]+s;
n:=n div r;
until n=0;
FromDec:=s;
end;
{фунция перевода любой сс в Dec}
function ToDec(n:string;r:longint):longint;
var
m,i:longint;
const
digit:string[16]='0123456789ABCDEF';
begin
m:=0;
while n[1]='0' do
delete(n,1,1);
for i:=1 to length(n) do
m:=m*r+pos(n[i],digit)-1;
ToDec:=m;
end;
{осоновная программы}
begin
writeln('Введите из какой CC:');
repeat
readln(cs1);
until
(cs1>=2) and (cs1<=36);
writeln('Введите число в соответствии с CC:');
readln(TD);
writeln('Введите в какую CC:');
repeat
readln(cs2);
until
(cs2>=2) and (cs2<=36);
writeln('Перевод из ',cs1,' CC --> ',cs2,' CC:');
writeln(FromDec(ToDec(TD,cs1),cs2));
end.
Объяснение кода листинга программы
- Объявлены переменные cs1, cs2, res, change: integer; TD: string;
- Функция FromDec(n,r: longint): string; принимает два параметра: n - десятичное число, r - основание системы счисления.
- В функции используется цикл repeat, который выполняется до тех пор, пока n не станет равным 0.
- Внутри цикла к переменной s добавляется символ, соответствующий основанию системы счисления (r), умноженному на остаток от деления n на r.
- Затем переменная n делится на r.
- После выполнения цикла, результат записывается в переменную s и возвращается из функции.
- Функция ToDec(n: string; r: longint): longint; принимает два параметра: n - строка, представляющая число в любой системе счисления, r - основание системы счисления.
- В функции используется цикл while, который выполняется до тех пор, пока первый символ строки n не станет равным 0.
- Внутри цикла удаляется первый символ строки n.
- Затем для каждого символа строки n вычисляется его позиция в системе счисления (pos(n[i], digit)-1), где digit - массив символов, представляющих цифры в системе счисления.
- Результат умножается на r и добавляется к переменной m.
- После выполнения цикла, результат записывается в переменную m и возвращается из функции.
- В основной программе пользователю предлагается ввести исходную систему счисления (cs1), затем число в этой системе счисления (TD), и, наконец, целевую систему счисления (cs2).
- Результатом выполнения программы будет перевод числа TD из исходной системы счисления (cs1) в целевую систему счисления (cs2), выводимый на экран.