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