Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,46 @@
|
|||
MODULE RomanNumeralsEncode;
|
||||
|
||||
FROM Strings IMPORT
|
||||
Append;
|
||||
FROM STextIO IMPORT
|
||||
WriteString, WriteLn;
|
||||
|
||||
CONST
|
||||
MaxChars = 15;
|
||||
(* 3888 or MMMDCCCLXXXVIII (15 chars) is the longest string properly encoded
|
||||
with these symbols. *)
|
||||
|
||||
TYPE
|
||||
TRomanNumeral = ARRAY [0 .. MaxChars - 1] OF CHAR;
|
||||
|
||||
PROCEDURE ToRoman(AValue: CARDINAL; VAR OUT Destination: ARRAY OF CHAR);
|
||||
TYPE
|
||||
TRomanSymbols = ARRAY [0 .. 1] OF CHAR;
|
||||
TWeights = ARRAY [0 .. 12] OF CARDINAL;
|
||||
TSymbols = ARRAY [0 .. 12] OF TRomanSymbols;
|
||||
CONST
|
||||
Weights = TWeights {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
|
||||
Symbols = TSymbols {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX",
|
||||
"V", "IV", "I"};
|
||||
VAR
|
||||
I: CARDINAL;
|
||||
BEGIN
|
||||
Destination := "";
|
||||
I := 0;
|
||||
WHILE (I <= HIGH(Weights)) AND (AValue > 0) DO
|
||||
WHILE AValue >= Weights[I] DO
|
||||
Append(Symbols[I], Destination);
|
||||
AValue := AValue - Weights[I]
|
||||
END;
|
||||
INC(I);
|
||||
END;
|
||||
END ToRoman;
|
||||
|
||||
VAR
|
||||
Numeral: TRomanNumeral;
|
||||
|
||||
BEGIN
|
||||
ToRoman(1990, Numeral); WriteString(Numeral); WriteLn; (* MCMXC *)
|
||||
ToRoman(2018, Numeral); WriteString(Numeral); WriteLn; (* MMXVIII *)
|
||||
ToRoman(3888, Numeral); WriteString(Numeral); WriteLn; (* MMMDCCCLXXXVIII *)
|
||||
END RomanNumeralsEncode.
|
||||
Loading…
Add table
Add a link
Reference in a new issue