За последние 60 дней ни разу не выходила
Сайт рассылки: http://prog.rusfaq.ru/pascal Открыта: 14-03-2002
РАССЫЛКИ ПОРТАЛА RUSFAQ.RU
Выпуск № 680от 26.09.2008, 23:05
Приложение:const RomeDigits: array [1..13] of string[2] = ('I', 'IV', 'V', 'IX', 'X', 'XL', 'L', 'XC', 'C', 'CD', 'D', 'CM', 'M'); ArabicNumbers: array [1..13] of integer = (1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000); var arabic,x,i,temp: integer; rome,s: string; ask: char; function ArabicToRome (n: integer): string; var i: integer; res: string; begin res:=''; i:=13; while n0 do begin while ArabicNumbers[i]n do i:=i-1; res:=res+RomeDigits[i]; n:=n-ArabicNumbers[i]; end; ArabicToRome := res; end; function RomeToArabic (s: string): integer; var i, j, res: integer; begin res:=0; i:=13; for j:=1 to length(s) do s[j]:=UpCase(s[j]); j:=1; while j<=length(s) do begin while (copy(s, j, length(RomeDigits[i]))<RomeDigits[i])and(i0) do i:=i-1; res:=res+ArabicNumbers[i]; j:=j+length(RomeDigits[i]); end; if ArabicToRome(res)=s then RomeToArabic:=res else RomeToArabic:=-1; end; begin repeat writeln('Choose mode of translation:'); writeln('1 - Rome to Binary'); writeln('2 - Binary to Rome'); readln(ask); if (ask<'1')and(ask<'2') then writeln('Enter only 1 or 2'); until (ask='1')or(ask='2'); if (ask='1') then begin write('Enter Rome: '); readln(rome); if (RomeToArabic(rome)<-1) then begin temp:=RomeToArabic(rome); s:=''; repeat s:=chr($30 + temp and 1) + s; temp:=temp shr 1; until temp=0; writeln('Binary result = ',s); end else writeln('There are some errors in Rome num.'); end else begin write('Enter Binary: '); readln(s); x:=0; for i:=1 to length(s) do x:=(x + ord(s[i])-$30) shl 1; arabic:=x shr 1; writeln('Rome result = ',ArabicToRome(arabic)); end; writeln('Press [Enter] to end.'); readln; end.
Приложение (если необходимо): * Код программы, выдержки из закона и т.п. дополнение к вопросу. Эта информация будет отображена в аналогичном окне как есть.
Обратите внимание! Вопрос будет отправлен всем экспертам данной рассылки! Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.
Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)! Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.
∙ Версия системы: 5.3 RC 2 от 09.09.2008