Работа 3.8 Упр.27 ГДЗ Семакин 10 класс (Информатика)
Рассмотрим вариант решения задания из учебника Семакин, Хеннер, Шеина 10 класс, Бином: 27. Составить программу преобразования натуральных чисел, записанных в римской нумерации, в десятичную систему счисления. *Цитирирование задания со ссылкой на учебник производится исключительно в учебных целях для лучшего понимания разбора решения задания. 10 semakin10 pract/3-8/27 98
Нужно преобразовать натуральное число из десятичной системы в римскую запись. Для этого удобно использовать таблицу соответствий римских символов и их значений, начиная с самых больших:
$$1000 \to M,\; 900 \to CM,\; 500 \to D,\; 400 \to CD,\; 100 \to C,\; 90 \to XC,\; 50 \to L,\; 40 \to XL,\; 10 \to X,\; 9 \to IX,\; 5 \to V,\; 4 \to IV,\; 1 \to I$$
Алгоритм работает так: пока число больше нуля, последовательно вычитаем из него наибольшие подходящие значения и добавляем соответствующие римские символы к строке результата.
var m := ReadInteger(‘Введите натуральное число не более 3999:’);
if not m.Between(1,3999) then Writeln(‘Недопустимое значение’)
else
begin
Write(m,’ = ‘);
var ar: array of string := (‘M’,’CM’,’D’,’CD’,’C’,’XC’,’L’,’XL’,’X’,’IX’,’V’,’IV’,’I’);
var aa := Arr(1000,900,500,400,100,90,50,40,10,9,5,4,1);
var n := 0;
var s := »;
while m > 0 do
begin
while aa[n] <= m do
begin
s += ar[n];
m -= aa[n];
end;
n += 1;
end;
Writeln(s)
end.
Программа сначала проверяет, что число лежит в диапазоне от 1 до 3999, затем формирует римскую запись и выводит её.
Ответ
Программа преобразует натуральное число не более 3999 из десятичной системы в римскую запись.