С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.85/39: Рейтинг темы: голосов - 39, средняя оценка - 4.85
ooloo
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 62
1

Программа перевода арабских чисел в римские!

27.11.2011, 22:46. Просмотров 8096. Ответов 7
Метки нет (Все метки)

Составить программу перевода любого значения N(n<3999) в запись римскими цифрами.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2011, 22:46
Ответы с готовыми решениями:

Перевод арабских в римские
Задача №1 Для записи римскими цифрами используются символы I, V, X, L, C, D,...

Программа для перевода чисел из 16 сс в 10 сс
нужно составить программу на паскале для перевода из 16тиричной системы...

Программа для перевода чисел из одной системы счисления в другую
Написать программу для перевода чисел из одной системы счисления в другую. Из...

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

Программа перевода из 10сс в 16сс
Уважаемые участники форума, очень нуждаюсь в программе Pascal по переводу из 10...

7
crachka
32 / 32 / 30
Регистрация: 25.11.2011
Сообщений: 43
27.11.2011, 23:03 2
вот она
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
uses crt;
const dec=3250;
function basedigit(x:integer):char;
begin
case x of 1:basedigit:='I';
5:basedigit:='V';
10:basedigit:='X';
50:basedigit:='L';
100:basedigit:='C';
500:basedigit:='D';
1000:basedigit:='M';
else basedigit:='0';
end;{case}
end;
function altconvert(x:integer):string;
var base:integer;
tmp:string;
begin tmp:='';
base:=0;
if (x<0) then tmp:='err' else if (x>3999)and(x<999999) then begin tmp:='*'+altconvert(trunc(x/1000))+'*';
x:=x-trunc(x/1000)*1000 ;
end;
while (X>0) do begin
if (x >= 1)and(x<=9) then
base:=1
else if (x >= 10)and(x<=99) then
base:=10
else if (x >= 100)and(x<=999) then
base:=100
else if(x >= 1000)and(x<=3999)
then base:=1000;
if x>=9*base then begin
tmp:=tmp+basedigit(base)+basedigit(base*10);
x:=x-9*base;
end
else if x>=5*base then begin
tmp:=tmp+basedigit(5*base);
x:=x-5*base;
end else if x>=4*base then begin tmp:=tmp+basedigit(base)+basedigit(5*base);
x:=x-4*base;
end;
while x>=base do begin
tmp:=tmp+basedigit(base);
x:=x-base;
end;
end; {while}
altconvert:=tmp;
end;
function convert(x:integer):string;
var tmp:string;
begin tmp:='';
if(x>=4000)or(x<1) then
convert:='err'
else begin
while x>=1000 do begin
tmp:=tmp+'M';
x:=x-1000;
end;
if x>=900 then begin
tmp:=tmp+'CM';
x:=x-900;
end
else
if x>=500 then begin
tmp:=tmp+'D';
x:=x-500;
end
else
if x>=400 then begin
tmp:=tmp+'CD';
x:=x-400;
end;
while x>=100 do begin
tmp:=tmp+'C';
x:=x-100;
end;
if x>=90 then begin
tmp:=tmp+'XC';
x:=x-90;
end
else if x>=50 then begin
tmp:=tmp+'L';
x:=x-50;
end else if x>=40 then begin
tmp:=tmp+'XL';
x:=x-40;
end;
while (x>=10) do begin
tmp:=tmp+'X';
x:=x-10;
end;
if x=9 then begin
tmp:=tmp+'IX';
x:=x-9;
end
else if x>=5 then begin
tmp:=tmp+'V';
x:=x-5;
end
else if x=4 then begin
tmp:=tmp+'IV';
x:=x-4;
end;
while (x>=1) do begin
tmp:=tmp+'I';
x:=x-1;
end;
end;{else}
convert:= tmp;
end;
var x:integer;
begin clrscr;
write('Введи число от 1 до 3999 ');
readln(x);
writeln('В арабских выглядет так ' + convert(x) );
readkey;
end.
1
ooloo
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 62
27.11.2011, 23:19  [ТС] 3
Спасибо. Но есть еще вопрос а она покороче не как не может выглядеть а то я это не объясню?!
0
crachka
32 / 32 / 30
Регистрация: 25.11.2011
Сообщений: 43
28.11.2011, 07:08 4
Цитата Сообщение от ooloo Посмотреть сообщение
Спасибо. Но есть еще вопрос а она покороче не как не может выглядеть а то я это не объясню?!
я поищу но не уверен что найду или попытаюсь сам составить
0
ooloo
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 62
29.11.2011, 01:26  [ТС] 5
НУ что как там задача?!
0
валерасай
5 / 5 / 2
Регистрация: 15.04.2011
Сообщений: 21
29.11.2011, 15:12 6
эта задача на форуме уже была вот решение
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
var n:integer;
a,b,c,d,f,h,q,s,w,r:string;
begin
writeln('введите число');
readln(n);
case n mod 10 of
1:a:='I';
2:a:='II';
3:a:='III';
4:a:='IV';
5:a:='V';
6:a:='VI';
7:a:='VII';
8:a:='VIII';
9:a:='IX';
end;
b:='X';
c:='L';
d:='C';
case n mod 100 of
10..19:q:=b+a;
20..29:q:=b+b+a;
30..39:q:=b+b+b+a;
40..49:q:='IL'+a;
50..59:q:=c+a;
60..69:q:=c+b+a;
70..79:q:=c+b+b+a;
80..89:q:=c+b+b+b+a;
90..99:q:='IC'+a;
else q:=a;
end;
s:='D';
case n mod 1000 of
100..199:f:=d+q;
200..299:f:=d+d+q;
300..399:f:=d+d+d+q;
400..499:f:='ID'+q;
500..599:f:=s+q;
600..699:f:=s+d+q;
700..799:f:=s+d+d+q;
800..899:f:=s+d+d+d+q;
900..999:f:='IM'+q;
else f:=q;
end;
w:='M';
case n mod 4000 of
1000..1999:r:=w+f;
2000..2999:r:=w+w+f;
3000..3999:r:=w+w+w+f;
else r:=f;
end;
writeln(r);
 end.
1
turbanoff
Эксперт Java
4020 / 3755 / 742
Регистрация: 18.05.2010
Сообщений: 9,329
Записей в блоге: 11
Завершенные тесты: 1
29.11.2011, 17:14 7
можно использовать таблицы
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var
   c : array [1..13] of string :=  ('M','CM','D','CD','C','XC','L','XL','X','IX','V','IV','I'); 
   n : array [1..13] of integer := (1000,900, 500,400,100,90,50,40,10,9,5,4,1); 
   res : string := '';
   i,val : integer;
begin
   writeln('введите число');
   readln(val);
   for i:=1 to 13 do
      while (val>=n[i]) do begin
         res := res + c[i];
         val := val - n[i];
      end;
   writeln(res);
end.
примерно так
2
ooloo
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 62
29.11.2011, 19:21  [ТС] 8
всем спасибо большое
0
29.11.2011, 19:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2011, 19:21

Программа для перевода из 16 сс в любую другую
Доброго времени суток. Помогите пожалуйста бедному студенту составить программу...

Программа для перевода из 3 в 16 систему счисления
Напишите, пожалуйста, простую программу в паскале abc, которая переводит из 3 в...

Программа перевода из одной система в другую
Добрый день, было дано задание написать упомянутую выше программу. Написал, но...


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

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

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