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

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



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