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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2012, 16:54   #1
glushara
 
Регистрация: 22.04.2012
Сообщений: 4
По умолчанию Перевод чисел

Доброго времени суток
нужно написать программу которая определяет в какой системе исчисления вводиться и число и перевести его соответственно в римскую(если вводиться арабские) или арабскую систему(если вводиться наоборот)

есть 2 кода.
2) Первод в арабскую с римской
1)Перевод с римской в арабскую.

Не знаю как их объеденить в один...и что бы определяло в какой системе вводиться число.


Код:
var
 h,e:integer;
 d:string[45];
begin

 writeln('BbeDute 4uCLo B Duano3ohe ot 1 do 2000');
 write('a=');
 readln(h);
 e:=h mod 10;
 h:=h div 10;
 case e of
  0: d:='';
  1: d:='I';
  2: d:='II';
  3: d:='III';
  4: d:='IV';
  5: d:='V';
  6: d:='VI';
  7: d:='VII';
  8: d:='VIII';
  9: d:='IX';
 end;
 e:=h mod 10;
 h:=h div 10;
 case e of
  0: d:=''+d;
  1: d:='X'+d;
  2: d:='XX'+d;
  3: d:='XXX'+d;
  4: d:='XL'+d;
  5: d:='L'+d;
  6: d:='LX'+d;
  7: d:='LXX'+d;
  8: d:='LXXX'+d;
  9: d:='XC'+d;
 end;
 e:=h mod 10;
 h:= h div 10;
 case e of
  0: d:=''+d;
  1: d:='C'+d;
  2: d:='CC'+d;
  3: d:='CCC'+d;
  4: d:='CD'+d;
  5: d:='D'+d;
  6: d:='DC'+d;
  7: d:='DCC'+d;
  8: d:='DCCC'+d;
  9: d:='CM'+d;
 end;
 e:=h mod 10;
 case e of
  0: d:=''+d;
  1: d:='M'+d;
  2: d:='MM'+d;
 end;
 writeln('B Pumckou cucteme c4uclenuia   ' ,d);
 readln;
end.
2)
Код:
 uses crt;
var
a: string;
i,j:integer;
s: longint;
b: array [1..50] of integer;
 h,e:integer;
 d:string[45];
begin
 clrscr;
writeln('chyslo');
readln(a);
for i:=1 to length(a) do
begin
if (a[i]<>'X') and (a[i]<>'V') and (a[i]<>'I') and (a[i]<>'D')
and (a[i]<>'M') and (a[i]<>'C') then halt;

 if a[i]='I' then b[i]:=1;
 if a[i]='V' then b[i]:=5;
 if a[i]='X' then b[i]:=10;
 if a[i]='L' then b[i]:=50;
 if a[i]='C' then b[i]:=100;
 if a[i]='D' then b[i]:=500;
 if a[i]='M' then b[i]:=1000 ;
 end;
    s:=0;
    for i:=1 to length(a) do
    begin
     s:=s+b[i];
     if(i>1)and(b[i-1]<b[i]) then s:=s-2*b[i-1];
   end;
 write(s);
 readln;
 end.
спасибо кто поможет.
glushara вне форума Ответить с цитированием
Старый 22.04.2012, 18:07   #2
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Сделать 2 процедуры для перевода, а в теле программы после приглашения на ввод(writeln('BBeDu 4uc/\0') и записи его в "a" (readln(a) просматриваешь первый символ массива на условие
Код:
if a[1] in ['0'..'9'] then процедура_перевода_из_араб_в_рим 
else if a[1] in ['I','V','M','D','C','L','X'] then процедура_перевода_из_рим_в_араб 
else writeln('DaBau He urpau с ucKyBcTBeHHbIM uHTe/\eKToM! BBoDu 4uc/\o!');
И при переводе из арабских в римские не забудь преобразовать тип string в integer ещё до этой строки:
Код:
e:=h mod 10;
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 22.04.2012, 18:57   #3
glushara
 
Регистрация: 22.04.2012
Сообщений: 4
По умолчанию

Можно поподробней.
потому что не очень силен в паскале...
glushara вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перевод чисел Настя Шелестова Помощь студентам 11 05.10.2011 08:11
перевод чисел Adeptus Stoybatus Помощь студентам 2 03.11.2010 09:05
перевод чисел с Ам тя Помощь студентам 2 01.10.2010 18:05
ПЕРЕВОД ЧИСЕЛ Nastya_19_90 Помощь студентам 0 08.04.2010 18:07
перевод чисел counter Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 05.06.2009 22:41