34 lines
1.1 KiB
Ada
34 lines
1.1 KiB
Ada
with Ada.Text_IO; use Ada.Text_IO;
|
|
|
|
procedure Roman_Numeral_Test is
|
|
function To_Roman (Number : Positive) return String is
|
|
subtype Digit is Integer range 0..9;
|
|
function Roman (Figure : Digit; I, V, X : Character) return String is
|
|
begin
|
|
case Figure is
|
|
when 0 => return "";
|
|
when 1 => return "" & I;
|
|
when 2 => return I & I;
|
|
when 3 => return I & I & I;
|
|
when 4 => return I & V;
|
|
when 5 => return "" & V;
|
|
when 6 => return V & I;
|
|
when 7 => return V & I & I;
|
|
when 8 => return V & I & I & I;
|
|
when 9 => return I & X;
|
|
end case;
|
|
end Roman;
|
|
begin
|
|
pragma Assert (Number >= 1 and Number < 4000);
|
|
return
|
|
Roman (Number / 1000, 'M', ' ', ' ') &
|
|
Roman (Number / 100 mod 10, 'C', 'D', 'M') &
|
|
Roman (Number / 10 mod 10, 'X', 'L', 'C') &
|
|
Roman (Number mod 10, 'I', 'V', 'X');
|
|
end To_Roman;
|
|
begin
|
|
Put_Line (To_Roman (1999));
|
|
Put_Line (To_Roman (25));
|
|
Put_Line (To_Roman (944));
|
|
end Roman_Numeral_Test;
|