Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2013, 12:20   #1
vasektemuprosek
PascalMadSkills
Пользователь
 
Регистрация: 19.12.2012
Сообщений: 14
Стрелка Перевод римских цифр в арабские

Суть программы. Вводим с клавиатуры римское число, а нам выводит его арабский вариант. Пример: ввели MMXXII, вывело 2022. Самая сложная часть - программа должна проверять введенное число на наличие ошибок. То есть, нельзя вводить то же число 4 раза подряд (MMMM, XXXX и т.д.); так же есть правила вычитания: IV, IX, XL, XC, CD, CM (Числа IC, IM и т.д. неверны).
Программа на Turbo Pascal 7.
В интернете полно программ, но во всех что то не работает. Заранее спасибо за помощь.

Последний раз редактировалось vasektemuprosek; 06.01.2013 в 12:24.
vasektemuprosek вне форума Ответить с цитированием
Старый 06.01.2013, 12:25   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
но во всех что то не работает
Показывай что именно не работает )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.01.2013, 12:30   #3
vasektemuprosek
PascalMadSkills
Пользователь
 
Регистрация: 19.12.2012
Сообщений: 14
По умолчанию

PHP код:
uses crt;
const
R: Array[1..13of String = ('I','IV','V','IX','X','XL','L','XC','C','CD','D','CM','M');
A: Array[1..13of Integer = (1,4,5,9,10,40,50,90,100,400,500,900,1000);

function 
Roman(nInteger): String;
var 
ResultStringiInteger;
begin
Result
:= '';
i:= 13;
while 
n>do begin
while a[i]>do Dec(i);
Result:= Result R[i];
Dec(n,a[i]);
end;
Roman:= Result;
end;
function 
Arabic(String) : Integer;
var 
ResultIntegeri,p:Integer;
begin
Arabic
:= -404;
Result:= 0;
i:= 13;
p:= 1;
while 
p<=Length(S) do begin
while copy(splength(R[i])) <>R[i] do begin
Dec
(i);
if 
0 then exit;
end;
Result:= Result A[i];
p:= Length(R[i]);
end;
if 
Roman(Result) = s then Arabic:= Result
end
;
var 
nErrinteger;
sString;
begin
clrscr
;
writeln('Esli vivedetsya -404 znachit vvedennoe chislo neverno');
write('Vvedite chislo: '); readln(s);
val(snErr);
write('Rezultat: ');
if 
Err 0 then
writeln
(Roman(n)) else writeln(Arabic(s));
readln
end

Тут много лишнего кода, который переводит и туда и обратно. Мне нужно только из римского в арабское. Плюс тут кривой вывод сообщения об ошибке. А так, переводит правильно. Выпилить бы отсюда индийский код и пофиксить вывод - и было бы отлично.
Я пробовал убирать функцию перевода из римских чисел, но без нее не работает прога. Все бы и так сошло, но это прога для курсовой, так что все должно быть вылизано
vasektemuprosek вне форума Ответить с цитированием
Старый 07.01.2013, 17:24   #4
vasektemuprosek
PascalMadSkills
Пользователь
 
Регистрация: 19.12.2012
Сообщений: 14
По умолчанию

Неужели никто не знает?
vasektemuprosek вне форума Ответить с цитированием
Старый 07.01.2013, 18:23   #5
vasektemuprosek
PascalMadSkills
Пользователь
 
Регистрация: 19.12.2012
Сообщений: 14
По умолчанию

В общем, заделал другую программу, попроще.
PHP код:
const 
Rims : array[1..13of string = ('M','CM','D','CD','C','XC','L','XL','X','IX','V','IV','I'); 
Arab : array[1..13of integer = (1000900500400100905040109541); 
var 
NIinteger
Sstring
function 
Rim2Arab (S:string) : integer;
var 
Iinteger;
begin
I
:=1:= 0;
while 
S<>'' do begin
while Rims[I] = Copy(S1Length(Rims[I]) ) do begin
:= CopyS1+Length(Rims[I]), 255);
:= Arab[I]
end;
I:=I+1
end
;
Rim2Arab := N
end
;
begin
Write
('4islo: '); ReadLn(S);
WriteLn(Rim2Arab(S));
readln
end

Ее проблемы: не выводит ошибку при вводе VV, IIII, и т.д. Ошибки типа IM IC и т.д. замечает, т.к. их нет в массиве, но программа просто зависает при их вводе. Помогите исправить =/
vasektemuprosek вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработать прогу для перевода римских цифр phreaker228 Помощь студентам 2 05.06.2011 14:32
Перевод из римских в арабские числа winnix Помощь студентам 23 31.05.2010 15:40
Калькулятор римских цифр ttjke Помощь студентам 3 20.04.2010 14:26
Калькулятор римских цифр ttjke Помощь студентам 2 21.03.2010 16:57