Практика программирования (Бейсик, Си, Паскаль)


         

аргументом которой является натуральное число


begin

s:='0.';

i:=l;

repeat

q:=m*10 div n;
p:=m*10 mod n;
rest[i]:=p;
if p=0 then begin

frac_to_str:==s+chr (q+48) ;
exit;
end;
for j:=l to i-1 do

if p=rest[j] then
begin insert(' (',s,j+2); frac_to_str:=s+')';
exit;
end;
inc(i);

s:=s+chr(q+48);
m:=p;

until p=0;
end;
begin

writeln('Введите числитель и знаменатель дроби :');
readln(m,n);

writeln(m,'/',n, ' = ', frac_to_str(m,n));
readln; end.

Задание 3.11. Перевод чисел в римскую систему счисления

Составить функцию символьного (строкового) типа, аргументом которой является натуральное число из интервала [1, 3999]. Функция должна возвращать строку с эквивалентным значением в формате римской системы счисления. Напомним, что в римской системе счисления используются большие латинские буквы — M(1000), O (500), C(100), L (50), X(10), V(5) и I(1). Если меньшая "цифра" находится левее "большей", то она вычитается (например: IV == V-I = 4, IX= X- I= 9, XL = L - X- 40). Если меньшая "цифра" расположена правее, то она прибавляется (например: VI = = V+ I= б, XI = X+ I= I I, LX = L + X = 60). Для некоторых "цифр" римская система допускает наличие до трех идущих подряд одинаковых

цифр —
I I= I + I = 2,
I I I = I + I+ I= 3,
XXX = X + X + X = 30,
ССС == C+ C+ C= 300,
MMM = M+ M+ M + 3000.

Совет 1 (общий)

Заведем два массива — символьный с наиболее характерными сочетаниями римских "цифр" и числовой с соответствующими значениями этих сочетаний. Оба массива разумно расположить в порядке убывания числовых значений (табл. 3.1).

Таблица 3.1. Расположение массива в порядке убывания числовых названий



































































































Индекс элемента


Символьный массив


Числовой массив


0


M


1000


1


CM


900


2


D


500


3


CD


400


4


С


100


5


ХС


90


6


L


50


7


XL


40


8


X


10


9


IX


9


10


V


5


11


IV


4


12


I


1


Начинаем вычитать из переводимого числа первый элемент числового массива и вычитаем до тех пор, пока результат остается положительным. Каждый раз, когда вычитание возможно, к результирующей строке присоединяем соответствующее символьное значение. И так продолжаем экспериментировать с каждым элементом числового массива. Кстати, сумма всех элементов равна 3999, чем и объясняется ограничение на допустимый диапазон обрабатываемых чисел.

Содержание  Назад  Вперед