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