Системы счисления - Pascal ABC (12524)
Формулировка задачи:
Определите основы систем исчисления от двоичной до пьятнадцятковои, где число 2A16 в младшем разряде содержит цифру ноль.
Решение задачи: «Системы счисления»
textual
Листинг программы
uses crt;
const digit:string[15]='0123456789ABCDE'; //цифры в СС от 2 до 15
{функция перевода Dec числа в сс 2-15
n-число в сс 10, r-система счисления в которую переводим}
function FromDec(n,r:integer):string;
var s:String;
begin
s:='';
repeat
s:=digit[(n mod r)+1]+s;
n:=n div r;
until n=0;
FromDec:=s;
end;
var ss:byte;
n:longint;
begin
n:=$2A;
for ss:=2 to 15 do
if FromDec(n,ss)[length(FromDec(n,ss))]='0' then
writeln('CC ',ss,'=',FromDec(n,ss))
end.
Объяснение кода листинга программы
Этот код на языке Pascal ABC выполняет следующие действия:
- Импортируется библиотека crt.
- Определяется константа digit, которая представляет собой массив из 15 строк, содержащих цифры от 2 до 15.
- Определяется функция FromDec, которая принимает два аргумента: n - число, которое нужно перевести в систему счисления от 2 до 15, и r - система счисления, в которую нужно перевести. Эта функция создает новую строку s и повторяет следующий цикл:
- s присваивается значение digit[(n mod r)+1] (т.е. берется цифра, которая соответствует остатку от деления n на r, и добавляется в начало строки s).
- Затем n делится на r.
- Пока n не станет равным 0, цикл повторяется.
- В конце функция возвращает значение s.
- Определяется переменная ss, которая представляет собой байт (т.е. она может принимать значения от 0 до 255).
- Задается начальное значение n как $2A.
- Для каждого значения ss от 2 до 15 выполняется следующая последовательность действий:
- Если последняя цифра в числе, переведенном из десятичной системы счисления в систему счисления ss, равна '0', то выводится сообщение
CC, ss,=, результат перевода числа n в систему счисления ss.
- Если последняя цифра в числе, переведенном из десятичной системы счисления в систему счисления ss, равна '0', то выводится сообщение
- Программа завершается.