Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.62/26: Рейтинг темы: голосов - 26, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 19.05.2011
Сообщений: 16
1

программы для перевода арабских чисел в римские и для обратной операции

21.05.2011, 17:05. Просмотров 4786. Ответов 4
Метки нет (Все метки)

Составить программы для перевода арабских чисел в римские и для обратной операции. Например, 255 = CCLV = сто + сто + пятьдесят + пять Замечание. Подобными алгоритмами перевода чисел из одной системы в другую мы пользуемся по нескольку раз на дню, когда ведем денежные расчеты. Сумма денег − это арабское число, которому соответствует определенный набор банкнот и монет (аналоги римских цифр).
есть такое решение:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
program rome_arabic;
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: integer; {арабское число}
  rome: string; {римское число}
  ch: char; {режим перевода чисел}
{Функция перевода арабского числа в римское}
function ArabicToRome (n: integer): string;
var
  i: integer;
  res: string;
begin
  res:='';
  i:=13; {проверяем от больших чисел к меньшим}
  while n>0 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
    {ищем следующую римскую цифру - 1 или 2 символа}
    while (copy(s, j, length(RomeDigits[i]))<>RomeDigits[i])and(i>0) 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
  writeln('Программа переводит римское число в арабское или арабское в римское');
  repeat
    writeln('Выберите режим перевода:');
    writeln('1 - римское число в арабское');
    writeln('2 - арабское число в римское');
    readln(ch);
    if (ch<>'1')and(ch<>'2') then
      writeln('Вы должны ввести номер режима: 1 или 2');
  until (ch='1')or(ch='2');
  if (ch='1') then begin {римское в арабское}
    write('Введите римское число: ');
    readln(rome);
    if (RomeToArabic(rome)<>-1) then
      writeln('Арабское число = ',RomeToArabic(rome))
    else
      writeln('В римской записи числа допущены ошибки! Перевод невозможен.');
  end
  else begin {арабское в римское}
    write('Введите арабское число: ');
    readln(arabic);
    writeln('Римская запись = ',ArabicToRome(arabic));
  end;
readln;
end.
оно работает.а можно как-то по проще???а то я не смогу обьяснить что тут к чему....
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.05.2011, 17:05
Ответы с готовыми решениями:

Составьте программы для перевода арабских чисел в римские и для обратной операции
Составьте программы для перевода арабских чисел в римские и для обратной операции. Например, 255=C...

Составьте программы для перевода арабских чисел в римские
Составьте программы для перевода арабских чисел в римские и для обратной операции. Например,...

Составить программы для перевода арабских чисел в римские и для обратной операции
Составить программы для перевода арабских чисел в римские и для обратной операции. Например, 255 =...

Составить программу для перевода арабских чисел в римские и для зворотньох операции. Например 255 = ССЛВ = СТО + СТО + Пятьдесят + Пять
Составить программу для перевода арабских чисел в римские и для зворотньох операции. Например 255 =...

4
iama
21.05.2011, 17:08
  #2

Не по теме:

Не ну это капец полный... у чувака готовая, в меру красивая, правильно работающая, почти построчно откоменченая прога, и ему еще чито-то не нравится... shut up, troll!

0
0 / 0 / 0
Регистрация: 19.05.2011
Сообщений: 16
21.05.2011, 17:19  [ТС] 3
ну спасибо...помогла...
0
1334 / 985 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
21.05.2011, 17:19 4
дюшес, это кто тебе помогла?
0
0 / 0 / 0
Регистрация: 28.12.2011
Сообщений: 57
24.01.2012, 14:46 5
Программа не делает проверку, если вводится не те символы с римских чисел на арабские.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.01.2012, 14:46

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Программа для перевода арабских чисел в римские
Составить программу для перевода арабских чисел в римские и для обратной операции. Например, 255 =...

Составить программу для перевода арабских чисел в римские
Составить программу для перевода арабских чисел в римские и для обратной операции. Например,...

Программа для перевода арабских цифр в римские
Нужно перевести число, записанное римскими цифрами, в десятичную систему счисления, и наоборот....

Оператор case of для перевода арабских цифр в римские
По условию задачи нужно изменить номер месяца из арабских цифр в римский. Вот что у меня вышло :...

Программа перевода арабских чисел в римские!
Составить программу перевода любого значения N(n&lt;3999) в запись римскими цифрами.

Программа перевода арабских чисел в римские
Написать программу, которая переводит положительное число введено в десятичном виде в римские числа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.