Перевод из 2-ой СС в 10-ую, 8-ую и 7-ую СС - Free Pascal
Формулировка задачи:
Задание таково: перевести ТОЛЬКО из 2-ой СС в 10-ую, 8-ую и 7-ую СС. При этом необходимо по запросу программы ввести бинарный код, а на выходе должны быть сразу 3 результата: в 7-ой, 8-ой и 10-ой СС.
Я накалякал код, но он считает из любой СС по желанию пользователя в любую другую, так же по желанию пользователя, что не соответствует заданию.
Вот, собственно, код:
program ir1; uses crt; var cs1,cs2,res,change:integer; TD:string; 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; 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 clrscr; writeln('Из какой СС перевод:'); repeat readln(cs1); until (cs1>=2) and (cs1<=36); writeln('Введите число соответствующее СС:'); readln(TD); writeln('Введите в какую СС переводить:'); repeat readln(cs2); until (cs2>=2) and (cs2<=36); writeln('Перевод из ',cs1,' СС в ',cs2,' СС:'); writeln(FromDec(ToDec(TD,cs1),cs2)); readln end.
Решение задачи: «Перевод из 2-ой СС в 10-ую, 8-ую и 7-ую СС»
textual
Листинг программы
function Convert(k,aD:integer):string; var t:integer; c:char; m:string; begin m:=''; While aD<>0 do begin t:=aD mod k; aD:=aD div k; c:=Char(t+Ord('0')); Insert(c,m,1); end; Convert:=m; end; var st,V,S:string; i,D:integer; begin Write('Dvoicnoe = '); Readln(st); Writeln; D:=0; for i:=1 to Length(st) do D:=2*D+Ord(st[i])-Ord('0'); V:=Convert(8,D); S:=Convert(7,D); Writeln('Desyaticnoe = ',D); Writeln('Vosmericnoe = ',V); Writeln('Semericnoe = ',S); Readln; end.
Объяснение кода листинга программы
- В коде определена функция Convert, которая принимает два аргумента: k и aD типа integer и возвращает строку.
- Внутри функции определен цикл While, который выполняется до тех пор, пока значение переменной aD не станет равным нулю.
- В каждой итерации цикла значение переменной aD делится на k, а остаток от деления присваивается переменной t.
- Затем значение переменной aD обновляется как результат деления.
- Значение переменной t преобразуется в символ, используя функцию Ord, и добавляется в начало строки m с помощью функции Insert.
- После завершения цикла переменная m возвращается как результат выполнения функции Convert.
- В основной части программы определены три строки: st, V и S, а также две переменные: i и D типа integer.
- Пользователю предлагается ввести двузначное число, и это число считывается в переменную st.
- Затем значение переменной D вычисляется как сумма двойки, умноженная на количество цифр в числе, и вычитается значение '0' в соответствии с полученным символом.
- Значения переменной D затем преобразуются в строки с помощью функции Convert, используя основания 8 и 7, и сохраняются в переменных V и S соответственно.
- Значения переменных D, V и S выводятся на экран.
- Программа завершается, когда пользователь нажимает любую клавишу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д