Перевод из 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.

Объяснение кода листинга программы

  1. В коде определена функция Convert, которая принимает два аргумента: k и aD типа integer и возвращает строку.
  2. Внутри функции определен цикл While, который выполняется до тех пор, пока значение переменной aD не станет равным нулю.
  3. В каждой итерации цикла значение переменной aD делится на k, а остаток от деления присваивается переменной t.
  4. Затем значение переменной aD обновляется как результат деления.
  5. Значение переменной t преобразуется в символ, используя функцию Ord, и добавляется в начало строки m с помощью функции Insert.
  6. После завершения цикла переменная m возвращается как результат выполнения функции Convert.
  7. В основной части программы определены три строки: st, V и S, а также две переменные: i и D типа integer.
  8. Пользователю предлагается ввести двузначное число, и это число считывается в переменную st.
  9. Затем значение переменной D вычисляется как сумма двойки, умноженная на количество цифр в числе, и вычитается значение '0' в соответствии с полученным символом.
  10. Значения переменной D затем преобразуются в строки с помощью функции Convert, используя основания 8 и 7, и сохраняются в переменных V и S соответственно.
  11. Значения переменных D, V и S выводятся на экран.
  12. Программа завершается, когда пользователь нажимает любую клавишу.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5
Похожие ответы