<font color="RoyalBlue"><i>
<b>
function
</b> IntToRoman( num:
Cardinal
): <b>
string
</b>;
<b>
const
</b>
N = <font color="RoyalBlue">
13
</font>;
vals: <b>
array
</b> [
1..
N] <b>
of
</b>
word
=
( <font color="RoyalBlue">
1
</font>, <font color="RoyalBlue">
4
</font>, <font color="RoyalBlue">
5
</font>, <font color="RoyalBlue">
9
</font>, <font color="RoyalBlue">
10
</font>, <font color="RoyalBlue">
40
</font>, <font color="RoyalBlue">
50
</font>, <font color="RoyalBlue">
90
</font>, <font color="RoyalBlue">
100
</font>, <font color="RoyalBlue">
400
</font>, <font color="RoyalBlue">
500
</font>, <font color="RoyalBlue">
900
</font>, <font color="RoyalBlue">
1000
</font> );
roms: <b>
array
</b> [
1..
N] <b>
of
</b> <b>
string
</b>[
2
] =
( <font color="RoyalBlue">
'I'
</font>, <font color="RoyalBlue">
'IV'
</font>, <font color="RoyalBlue">
'V'
</font>, <font color="RoyalBlue">
'IX'
</font>, <font color="RoyalBlue">
'X'
</font>, <font color="RoyalBlue">
'XL'
</font>, <font color="RoyalBlue">
'L'
</font>, <font color="RoyalBlue">
'XC'
</font>, <font color="RoyalBlue">
'C'
</font>, <font color="RoyalBlue">
'CD'
</font>, <font color="RoyalBlue">
'D'
</font>, <font color="RoyalBlue">
'CM'
</font>, <font color="RoyalBlue">
'M'
</font> );
<b>
var
</b>
b: <font color="RoyalBlue">
1
</font>..N;
<b>
begin
</b>
Result := <font color="RoyalBlue">
''
</font>;
b := N;
<b>
while
</b> num > <font color="RoyalBlue">
0
</font> <b>
do
</b>
<b>
begin
</b>
<b>
while
</b> vals[b] > num <b>
do
</b>
Dec( b );
Dec( num, vals[b] );
Result := Result + roms[b];
<b>
end
</b>;
<b>
end
</b>;
<b>
procedure
</b> TForm1
.
Button1Click(Sender: TObject);
<b>
begin
</b>
ShowMessage( IntToRoman( <font color="RoyalBlue">
1561
</font> ) );
<b>
end
</b>;
<i><font color="RoyalBlue">/</font><font color="RoyalBlue">/ Способ второй</font></i>
<b>
function
</b> IntToRoman( num:
Cardinal
): <b>
string
</b>;
<b>
const
</b>
N = <font color="RoyalBlue">
13
</font>;
vals: <b>
array
</b> [
1..
N] <b>
of
</b>
word
=
( <font color="RoyalBlue">
1
</font>, <font color="RoyalBlue">
4
</font>, <font color="RoyalBlue">
5
</font>, <font color="RoyalBlue">
9
</font>, <font color="RoyalBlue">
10
</font>, <font color="RoyalBlue">
40
</font>, <font color="RoyalBlue">
50
</font>, <font color="RoyalBlue">
90
</font>, <font color="RoyalBlue">
100
</font>, <font color="RoyalBlue">
400
</font>, <font color="RoyalBlue">
500
</font>, <font color="RoyalBlue">
900
</font>, <font color="RoyalBlue">
1000
</font> );
roms: <b>
array
</b> [
1..
N] <b>
of
</b> <b>
string
</b>[
2
] =
( <font color="RoyalBlue">
'I'
</font>, <font color="RoyalBlue">
'IV'
</font>, <font color="RoyalBlue">
'V'
</font>, <font color="RoyalBlue">
'IX'
</font>, <font color="RoyalBlue">
'X'
</font>, <font color="RoyalBlue">
'XL'
</font>, <font color="RoyalBlue">
'L'
</font>, <font color="RoyalBlue">
'XC'
</font>, <font color="RoyalBlue">
'C'
</font>, <font color="RoyalBlue">
'CD'
</font>, <font color="RoyalBlue">
'D'
</font>, <font color="RoyalBlue">
'CM'
</font>, <font color="RoyalBlue">
'M'
</font> );
<b>
var
</b>
b: <font color="RoyalBlue">
1
</font>..N;
<b>
begin
</b>
Result := <font color="RoyalBlue">
''
</font>;
b := N;
<b>
while
</b> ( num > <font color="RoyalBlue">
0
</font> ) <b>
and
</b> ( b >= <font color="RoyalBlue">
1
</font> ) <b>
do
</b>
<b>
begin
</b>
<b>
if
</b> num >= vals[b] <b>
then
</b>
<b>
begin
</b>
Result := Result + roms[b];
Dec( num, vals[b] );
<b>
end
</b>
<b>
else
</b>
Dec( b );
<b>
end
</b>;
<b>
end
</b>;
<b>
procedure
</b> TForm1
.
Button1Click(Sender: TObject);
<b>
begin
</b>
ShowMessage( IntToRoman( <font color="RoyalBlue">
1561
</font> ) );
<b>
end
</b>;