|
|
ROMARAB.PAS |
|
{* Функции для преобразования Римских чисел в обычные Арабские *}Unit ROMARAB;Interface Implementation Begin writeln('Функции для преобразования Римских чисел в обычные Арабские'); End. { Program To translate Roman To Arabian } { by Krylov Dmitriy, krylov@mail.primorye.ru } Program TranslateRomanToArabian; Uses ROMARAB.pas; {* Эту строку можно удалить *} Const {* Предопределенные *} TransTable : Array[1..13] Of Record AN : word; RN : String[2]; End = ((AN : 1000; RN : 'M'), (AN : 900; RN : 'CM'), (AN : 500; RN : 'D'), (AN : 400; RN : 'CD'), (AN : 100; RN : 'C'), (AN : 90; RN : 'XC'), (AN : 50; RN : 'L'), (AN : 40; RN : 'XL'), (AN : 10; RN : 'X'), (AN : 9; RN : 'IX'), (AN : 5; RN : 'V'), (AN : 4; RN : 'IV'), (AN : 1; RN : 'I')); Var {* Объявление переменных *} RomanNumber : String; ArabianNumber : longint; CurNum : byte; CurSymb : String[2]; CurVal : word; Begin Write('Input Roman Number: '); ReadLn(RomanNumber); { If value In RomanNumber is incorrect, Then value Of ArabianNumber is } { incorrect too } { --- Translate --------- } ArabianNumber := 0; CurNum := 1; Repeat CurSymb := TransTable[CurNum].RN; CurVal := TransTable[CurNum].AN; While Copy(RomanNumber, 1, Length(CurSymb)) = CurSymb Do Begin Inc(ArabianNumber, CurVal); {* Увеличиваем ArabianNumber, CurVal на 1 *} Delete(RomanNumber, 1, Length(CurSymb)); End; Inc(CurNum); {* Прибавим к CurNum единицу *} Until RomanNumber = ''; { - - - End Of translate - - - - - - - - - } WriteLn('Arabian Number: ', ArabianNumber); End...... 07.08.2014 - Breakpoint - точка остановки 07.08.2014 - Топ-10 самых популярных приложений в Facebook 18.11.2013 - Панель управления и персонализация системы. Windows Vista 18.11.2013 - Логические и физические диски. Windows Vista 18.11.2013 - Удаление файлов и папок 01.11.2013 - Программирование дисковых подсистем: возможности 31.10.2013 - Windows8 или Windows7? 31.10.2013 - Windows8, игры |
|
Non-commercial fansite
|