Програмка на обработку символьной информации. Превратить введенное число в римское и вывести на экран - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Организовать ввод с клавиатуры любого года в пределах от 1 до 3999. Превратить введенное число в римское и вывести на экран. Далее приведено значение римских цифр:
http://www.cyberforum.ru/attachment....1&d=1386600805

Решение задачи: «Програмка на обработку символьной информации. Превратить введенное число в римское и вывести на экран»

textual
Листинг программы
uses crt;
const
  Tab_per: array[1..13] of record
    ar: word;
    rm: string[2];
  end = ((ar: 1000; rm:'M'),  (ar: 900; rm: 'CM'), (ar: 500; rm: 'D'),
         (ar: 400; rm: 'CD'), (ar: 100; rm: 'C'),  (ar: 90; rm: 'XC'),
         (ar: 50; rm: 'L'),   (ar: 40; rm: 'XL'),  (ar: 10; rm: 'X'),
         (ar: 9;rm: 'IX'),   (ar: 5; rm: 'V'),    (ar: 4; rm: 'IV'),
         (ar: 1; rm: 'I'));
var
  rimch: string;
  arch: longint;
  num: byte;
  symb: string[2];
  znch: word;
begin
clrscr;
  Write('Vvedite arabskoe chislo: ');
  ReadLn(arch);
  rimch := '';
  num := 1;
  repeat
    symb := Tab_per[num].rm;
    znch := Tab_per[num].ar;
    while znch <= arch do
       begin
         rimch := rimch + symb;
         Dec(arch, znch);
       end;
    Inc(num);
  until arch <= 0;
  WriteLn('Rimskoe chislo: ', rimch);
  Readln
end.

Объяснение кода листинга программы

  1. Объявлены константы для перевода чисел в римскую систему счисления.
  2. Введена переменная rimch для хранения результата.
  3. Введена переменная arch для хранения введенного числа.
  4. Введена переменная num для подсчета количества использований каждого символа в массиве Tab_per.
  5. Введена переменная symb для временного хранения значения из массива Tab_per.
  6. Введена переменная znch для хранения числового значения каждого символа из массива Tab_per.
  7. Выводится приглашение для ввода арабского числа.
  8. Считывается арабское число и сохраняется в переменной arch.
  9. Устанавливается начальное значение для переменной rimch.
  10. Устанавливается начальное значение для переменной num.
  11. Организован цикл для обработки каждого элемента массива Tab_per.
  12. Внутри цикла проверяется, что значение znch не больше arch.
  13. Если это так, то добавляется символ из массива Tab_per в переменную rimch.
  14. Значение arch уменьшается на значение znch.
  15. Увеличивается значение переменной num.
  16. Цикл продолжается до тех пор, пока arch больше или равно нулю.
  17. Выводится результат в римской системе счисления.
  18. Запрашивается ввод для продолжения работы программы.

Оцени полезность:

14   голосов , оценка 4.071 из 5
Похожие ответы