Посчитать сумму двух натуральных чисел А и В, записанных в римской системе счисления. Ответ также записать в римской системе счисления.
М = 1000, D = 500, С = 100, L = 50, X = 10, V = 5, I =1 (Все числа – не превышают 2000).
*****
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
sum,N, NI, I, J : integer;
S,s1,s2 : 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
ReadLn(S);
for i:=1 to length(S) do
begin
if S[i]='+' then
begin
s1:=copy(S,1,i-1);
s2:=copy(S,i+1,length(S)-i);
end;
end;
sum:=Rim2Arab(s1)+Rim2Arab(s2);
writeln(Arab2Rim(sum));
end.
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
sum,N, NI, I, J : integer;
S,s1,s2 : 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
ReadLn(S);
for i:=1 to length(S) do
begin
if S[i]='+' then
begin
s1:=copy(S,1,i-1);
s2:=copy(S,i+1,length(S)-i);
end;
end;
sum:=Rim2Arab(s1)+Rim2Arab(s2);
writeln(Arab2Rim(sum));
end.
*****
Комментариев нет:
Отправить комментарий