1-11 класс
  • 1-11 класс
  • 1 класс
  • 2 класс
  • 3 класс
  • 4 класс
  • 5 класс
  • 6 класс
  • 7 класс
  • 8 класс
  • 9 класс
  • 10 класс
  • 11 класс
Выберите класс
Предметы
Семакин
Работа 3.8 Упр.27 ГДЗ Семакин 10 класс (Информатика)
Семакин, Хеннер, Шеина
10 класс
Класс
10
Предмет
Информатика
Автор
Семакин, Хеннер, Шеина

Работа 3.8 Упр.27 ГДЗ Семакин 10 класс (Информатика)

Задача

Составить программу преобразования натуральных чисел, записанных в римской нумерации, в десятичную систему счисления.

Подробный ответ

Нужно преобразовать натуральное число из десятичной системы в римскую запись. Для этого удобно использовать таблицу соответствий римских символов и их значений, начиная с самых больших:

$$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 из десятичной системы в римскую запись.



Общая оценка
4 / 5
Другие учебники
Другие предметы