Умножение на одну цифру в разных системах счисления - Pascal

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

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

Составьте программу выполнения умножения на одну цифру с целыми числами в системе счисления, основание которой (от 2 до 9) вводится с клавиатуры без перевода чисел в десятичную систему счисления

Решение задачи: «Умножение на одну цифру в разных системах счисления»

textual
Листинг программы
type mas=array[byte] of byte;
//параметры: массив, размер массива, основание СС, цифра
procedure umn(var a:mas;n,osn,c:byte);
var i,j,p,x:integer;
begin
p:=0;//перенос
for i:=n downto 1 do/идем с конца и умножаем "столбиком"
 begin
  x:=a[i]*c+p;
  a[i]:=x mod osn; //остаток
  p:=x div osn; //новый перенос
 end;
if p>0 then //если последний перенос не 0
 begin
  n:=n+1; //увеличим размер на 1
  for j:=n downto 2 do //сдвинем массив вправо
  a[j]:=a[j-1];
  a[1]:=p; //перенос запишем вперед
 end;
writeln('Результат умножения');
for i:=1 to n do
write(a[i]);
end;
var n,i,osn,k:byte;
    s:string;
    a:mas;
begin
repeat
write('Введите систему счисления от 2 до 9 osn=');
readln(osn);
until osn in [2..9];
writeln('Введите число в СС ',osn);
repeat
readln(s);
k:=0;
i:=1;
while(i<=length(s))and(k=0) do
if not(s[i] in ['0'..chr(osn+47)])then k:=1
else inc(i);
if k=1 then writeln('Это не число в СС ',osn,' повторите ввод');
until k=0;
n:=length(s);
for i:=1 to n do  //преобразуем строку в массив цифр
a[i]:=ord(s[i])-48;
repeat
write('Введите цифру от 0 до ',osn-1,' k=');
readln(k);
until k in [0..osn-1];
umn(a,n,osn,k);
end.

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

  1. Объявляется тип массива mas=array[byte] of byte; //массив из байтов
  2. Создается процедура umn, принимающая параметры: var a:mas - массив, n - размер массива, osn - основание СС (системы счисления), c - цифра
  3. Внутри процедуры umn объявляются переменные i, j, p, x: integer
  4. Устанавливается начальное значение переменной p:=0 (перенос)
  5. Запускается цикл, итерирующийся от n до 1, в котором происходит умножение столбиком и расчет переноса
  6. Если последний перенос больше 0, то увеличивается размер массива (n:=n+1) и сдвигается исходный массив вправо, последний перенос записывается в начале массива
  7. Выводится результат умножения
  8. Затем объявляется переменные n, i, osn, k: byte; s: string; a: mas;
  9. Создается цикл repeat-until для ввода значения osn (системы счисления) в диапазоне от 2 до 9
  10. Пользователю предлагается ввести число в выбранной системе счисления
  11. Проверяется корректность введенного числа и его соответствие системе счисления
  12. Вводится цифра k, проверяется ее корректность
  13. Запускается процедура умножения umn(a, n, osn, k) с полученными значениями переменных. Код реализует умножение числа на одну цифру в разных системах счисления и выводит результат этого умножения.

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


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

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

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