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