Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


Перевод из арабской в римскую систему и наоборот

Поиск:
Алгоритм весьма прост и извлекается непосредственно из исходника.

Код

{ Copyright MM Andrew Usachov }

Const

R: Array[1..13] of String[2] =

('I','IV','V','IX','X','XL','L','XC','C','CD','D','CM','M');

A: Array[1..13] of Integer=

(1,4,5,9,10,40,50,90,100,400,500,900,1000);

Function Roman(N : Integer) : String;

Var Result : String;

    i      : Integer;

begin

Result := '';

i := 13;

While N >0 do

begin

   While A[i] >N do Dec(i);

   Result := Result + R[i];

   Dec(N, A[i]);

end;

Roman := Result;

end;

Function Arabic(S : String) : Integer;

Var Result : Integer;

    i, p   : Integer;

begin

  Arabic := -1;

  Result := 0;

  i := 13;

  p := 1;

  While p <=Length(S) do

  begin

    While Copy(S, p, Length(R[i])) <>R[i] do

    begin

      Dec(i);

      If i = 0 then Exit;

    end;

    Result := Result + A[i];

    p := p + Length(R[i]);

  end;

  If Roman(Result) = S then Arabic := Result

end;

Var N, Err : Integer;

    S : String;

BEGIN

repeat

   ReadLn(S);

   If S = '' then Break;

   Val(S, N, Err);

   If Err = 0 then

     WriteLn(Roman(N))

   else

     WriteLn(Arabic(S));

until false;

END.








Просмотров: 2562

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную