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