Перевод из 2-ой СС в 10-ую, 8-ую и 7-ую СС - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Задание таково: перевести ТОЛЬКО из 2-ой СС в 10-ую, 8-ую и 7-ую СС. При этом необходимо по запросу программы ввести бинарный код, а на выходе должны быть сразу 3 результата: в 7-ой, 8-ой и 10-ой СС. Я накалякал код, но он считает из любой СС по желанию пользователя в любую другую, так же по желанию пользователя, что не соответствует заданию. Вот, собственно, код:
Листинг программы
  1. program ir1;
  2. uses crt;
  3. var cs1,cs2,res,change:integer;
  4. TD:string;
  5. function FromDec(n,r:longint):string;
  6. var
  7. s:string;
  8. const
  9. digit:string[16]='0123456789ABCDEF';
  10. begin
  11. s:='';
  12. repeat
  13. s:=digit[(n mod r)+1]+s;
  14. n:=n div r;
  15. until n=0;
  16. FromDec:=s;
  17. end;
  18. function ToDec(n:string; r:longint):longint;
  19. var
  20. m,i:longint;
  21. const digit:string[16]='0123456789ABCDEF';
  22. begin
  23. m:=0;
  24. while n[1]='0' do delete(n,1,1);
  25. for i:=1 to length(n) do m:=m*r+pos(n[i],digit)-1;
  26. ToDec:=m;
  27. end;
  28. begin
  29. clrscr;
  30. writeln('Из какой СС перевод:');
  31. repeat
  32. readln(cs1);
  33. until
  34. (cs1>=2) and (cs1<=36);
  35. writeln('Введите число соответствующее СС:');
  36. readln(TD);
  37. writeln('Введите в какую СС переводить:');
  38. repeat
  39. readln(cs2);
  40. until
  41. (cs2>=2) and (cs2<=36);
  42. writeln('Перевод из ',cs1,' СС в ',cs2,' СС:');
  43. writeln(FromDec(ToDec(TD,cs1),cs2));
  44. readln
  45. end.

Решение задачи: «Перевод из 2-ой СС в 10-ую, 8-ую и 7-ую СС»

textual
Листинг программы
  1. function Convert(k,aD:integer):string;
  2. var  t:integer;
  3.      c:char;
  4.      m:string;
  5. begin
  6.      m:='';
  7.      While aD<>0 do
  8.       begin
  9.         t:=aD mod k;
  10.         aD:=aD div k;
  11.         c:=Char(t+Ord('0'));
  12.         Insert(c,m,1);
  13.       end;
  14.      Convert:=m;
  15. end;
  16. var  st,V,S:string;
  17.      i,D:integer;
  18. begin
  19.       Write('Dvoicnoe = ');
  20.        Readln(st);
  21.         Writeln;
  22.      D:=0;
  23.       for i:=1 to Length(st) do
  24.        D:=2*D+Ord(st[i])-Ord('0');
  25.      V:=Convert(8,D);
  26.      S:=Convert(7,D);
  27.      Writeln('Desyaticnoe = ',D);
  28.      Writeln('Vosmericnoe = ',V);
  29.      Writeln('Semericnoe  = ',S);
  30.      Readln;
  31. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы