помогите написать програмку плиз

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
Паша
Сообщения: 5
Зарегистрирован: 20 мар 2008, 22:46

Помогите пожалуйста написать довольно таки нетяжелую программу, не думаю что она заберёт у вас много времени. Программа перевода арабских чисел в римские. Надо сделать через циклы (желательно через For).
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

1) поищите, в разделе алгоритмы вроде бы есть такой...
2) Вы забыли указать на каком языке программирования.
Паша
Сообщения: 5
Зарегистрирован: 20 мар 2008, 22:46

Програмка должна быть написана на Паскале
Паша
Сообщения: 5
Зарегистрирован: 20 мар 2008, 22:46

Я не нашёл в алгоритмах (может быть плохо искал),видел подобной сложности задачи но именно той которая мне нужна нету ))))
Паша
Сообщения: 5
Зарегистрирован: 20 мар 2008, 22:46

Народ выручайте
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

ладно... так уж и быть...
помни мою доброту (просто повезло тебе - нашёл у себя в загашничке) ;-))

Код: Выделить всё

{Источник: "Наука и жизнь" N12 1986  cтр. 95 }
{Алгоритм: В. Птицын г.Москва }
type str2 = string[2];
   
const
   Rims : array[1..14] of str2 = ('M','CM','D','CD','C','XC','L','XL','X','IX','V','IV','I',' ');
   Arab : array[1..14] of integer = (1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1, 0);

var
  N, NI, I, J : integer;
  S    : string;

  function Arab2Rim(N : integer) : string;
  var S : string;
      I : integer;
  begin
    S := ''; I:=1;
    while N > 0 do begin
      while Arab[I]<=N do begin
        S := S + Rims[I];
        N := N - Arab[I]
      end;
      I:=I+1
    end;
    Arab2Rim := S
  end;

  function Rim2Arab (S:string) : integer;
  var I, N : integer;
  begin
    I:=1; N := 0;
    while S<>'' do begin
      while Rims[I] = Copy(S, 1, Length(Rims[I]) ) do begin
        S := Copy( S, 1+Length(Rims[I]), 255);
        N := N + Arab[I]
      end;
      I:=I+1
    end;
    Rim2Arab := N
  end;

begin
  WriteLn('Перевод из арабских цифр в римские. 1999 B_SA');
{  Write('Введите число для преобразования:'); ReadLn(N);}
  for NI := 26 to 46 do
    WriteLn(NI,' = ',Arab2Rim(NI),' обратно ', Rim2Arab( Arab2Rim(NI) ));
end.
BBB
Сообщения: 1298
Зарегистрирован: 27 дек 2005, 13:37

Serge_Bliznykov,
не далее как позавчера В ЭТОМ ЖЕ РАЗДЕЛЕ:
http://forum.developing.ru/showthread.php?t=13390

По-моему, они у одного преподавателя учатся :)

К слову, приведенный там алгоритм по крайнйе мере в реализации отличается от вашего. И "копирайт" другой.
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

ну вот и славно. у каждого будет свой вариант ;-))
можно будет утверждать при сдаче, что сам написал ;-)))
Паша
Сообщения: 5
Зарегистрирован: 20 мар 2008, 22:46

спсибо огромное, выручил )))))
Ответить