00000000: 70 72 6F 67 72 61 6D 20 72 6F 6D 63 69 6A 66 3B |program romcijf;|
00000010: 0D 54 59 50 45 0D 20 20 20 72 6F 6D 74 79 70 65 |.TYPE. romtype|
00000020: 20 3D 20 53 54 52 49 4E 47 5B 34 30 5D 3B 0D 56 | = STRING[40];.V|
00000030: 41 52 0D 20 20 20 67 65 74 61 6C 3A 20 69 6E 74 |AR. getal: int|
00000040: 65 67 65 72 3B 0D 20 20 20 72 6F 6D 63 69 6A 66 |eger;. romcijf|
00000050: 3A 20 72 6F 6D 74 79 70 65 3B 0D 42 45 47 49 4E |: romtype;.BEGIN|
00000060: 3B 0D 50 52 4F 43 45 44 55 52 45 20 72 6F 6D 65 |;.PROCEDURE rome|
00000070: 69 6E 63 69 6A 66 28 56 41 52 20 67 65 74 61 6C |incijf(VAR getal|
00000080: 3A 20 69 6E 74 65 67 65 72 3B 20 76 61 72 20 72 |: integer; var r|
00000090: 6F 6D 63 69 6A 66 3A 20 72 6F 6D 74 79 70 65 29 |omcijf: romtype)|
000000A0: 3B 0D 43 4F 4E 53 54 3B 0D 20 20 20 77 3A 20 41 |;.CONST;. w: A|
000000B0: 52 52 41 59 5B 31 2E 2E 37 5D 20 6F 66 20 69 6E |RRAY[1..7] of in|
000000C0: 74 65 67 65 72 3D 28 31 30 30 30 2C 20 35 30 30 |teger=(1000, 500|
000000D0: 2C 20 31 30 30 2C 20 35 30 2C 20 31 30 2C 20 35 |, 100, 50, 10, 5|
000000E0: 2C 20 31 29 3B 0D 20 20 63 68 61 3A 20 41 52 52 |, 1);. cha: ARR|
000000F0: 41 59 5B 31 2E 2E 37 5D 20 6F 66 20 63 68 61 72 |AY[1..7] of char|
00000100: 3D 20 27 4D 44 43 4C 58 56 49 27 3B 0D 56 41 52 |= 'MDCLXVI';.VAR|
00000110: 3B 0D 20 20 6D 2C 20 6E 2C 20 78 3A 20 69 6E 74 |;. m, n, x: int|
00000120: 65 67 65 72 3B 0D 42 45 47 49 4E 3B 0D 20 20 20 |eger;.BEGIN;. |
00000130: 78 3A 3D 20 67 65 74 61 6C 3B 20 6D 3A 3D 20 31 |x:= getal; m:= 1|
00000140: 3B 0D 20 20 20 57 48 49 4C 45 20 78 3E 30 20 64 |;. WHILE x>0 d|
00000150: 6F 3B 0D 20 20 20 42 45 47 49 4E 3B 0D 20 20 20 |o;. BEGIN;. |
00000160: 20 20 20 49 46 20 78 2D 77 28 6D 29 3C 30 20 54 | IF x-w(m)<0 T|
00000170: 48 45 4E 3B 0D 20 20 20 20 20 20 42 45 47 49 4E |HEN;. BEGIN|
00000180: 3A 0D 20 20 20 20 20 20 20 20 6E 3A 3D 37 3B 0D |:. n:=7;.|
00000190: 20 20 20 20 20 20 20 20 57 48 49 4C 45 20 6E 3E | WHILE n>|
000001A0: 3D 28 32 2A 28 28 6D 2B 31 29 20 64 69 76 20 32 |=(2*((m+1) div 2|
000001B0: 29 2B 31 29 20 64 6F 3B 0D 20 20 20 20 20 20 20 |)+1) do;. |
000001C0: 20 42 45 47 49 4E 3B 0D 20 20 20 20 20 20 20 20 | BEGIN;. |
000001D0: 20 20 49 46 20 78 2D 77 5B 6D 5D 2B 77 5B 6E 5D | IF x-w[m]+w[n]|
000001E0: 3E 3D 30 20 54 48 45 4E 0D 20 20 20 20 20 20 20 |>=0 THEN. |
000001F0: 20 20 20 42 45 47 49 4E 0D 20 20 20 20 20 20 20 | BEGIN. |
00000200: 20 20 20 20 20 78 3A 3D 20 78 2D 77 5B 6D 5D 2B | x:= x-w[m]+|
00000210: 77 5B 6E 5D 3B 0D 20 20 20 20 20 20 20 20 20 20 |w[n];. |
00000220: 20 20 72 6F 6D 63 69 6A 66 3A 3D 20 72 6F 6D 63 | romcijf:= romc|
00000230: 69 6A 66 2B 20 63 68 61 5B 6E 5D 20 2B 63 68 61 |ijf+ cha[n] +cha|
00000240: 5B 6D 5D 3B 0D 20 20 20 20 20 20 20 20 20 20 45 |[m];. E|
00000250: 4E 44 3B 0D 20 20 20 20 20 20 20 20 20 20 6E 3A |ND;. n:|
00000260: 3D 20 6E 2D 32 0D 20 20 20 20 20 20 20 20 45 6E |= n-2. En|
00000270: 64 3B 0D 20 20 20 20 20 20 20 20 6D 3A 3D 20 6D |d;. m:= m|
00000280: 2B 31 0D 20 20 20 20 20 20 45 4E 44 3B 0D 20 20 |+1. END;. |
00000290: 20 20 20 20 45 4C 53 45 3B 0D 20 20 20 20 20 20 | ELSE;. |
000002A0: 42 45 47 49 4E 3B 0D 20 20 20 20 20 20 20 20 20 |BEGIN;. |
000002B0: 78 3A 3D 20 78 2D 77 5B 6D 5D 3B 20 72 6F 6D 63 |x:= x-w[m]; romc|
000002C0: 69 6A 66 3A 3D 20 72 6F 6D 63 69 6A 66 20 2B 63 |ijf:= romcijf +c|
000002D0: 68 61 5B 6D 5D 3B 0D 20 20 20 20 20 20 45 4E 44 |ha[m];. END|
000002E0: 3B 0D 20 20 20 20 45 4E 44 3B 0D 45 4E 44 3B 0D |;. END;.END;.|
000002F0: 3A 0D 42 45 47 49 4E 0D 52 45 50 45 41 54 3B 0D |:.BEGIN.REPEAT;.|
00000300: 72 6F 6D 63 69 6A 66 3A 3D 20 27 27 3B 0D 57 52 |romcijf:= '';.WR|
00000310: 49 54 45 20 28 27 56 6F 65 72 20 67 65 68 65 65 |ITE ('Voer gehee|
00000320: 6C 20 67 65 74 61 6C 20 69 6E 20 28 74 6F 74 20 |l getal in (tot |
00000330: 34 30 30 30 29 27 29 3B 0D 52 45 41 44 28 67 65 |4000)');.READ(ge|
00000340: 74 61 6C 29 3B 20 57 52 49 54 45 4C 4E 3B 0D 72 |tal); WRITELN;.r|
00000350: 6F 6D 65 69 6E 63 69 6A 66 20 28 67 65 74 61 6C |omeincijf (getal|
00000360: 2C 20 72 6F 6D 63 69 6A 66 29 3B 0D 57 52 49 54 |, romcijf);.WRIT|
00000370: 45 4C 4E 28 67 65 74 61 6C 2C 27 20 20 3D 20 20 |ELN(getal,' = |
00000380: 27 2C 72 6F 6D 63 69 6A 66 29 3B 20 57 52 49 54 |',romcijf); WRIT|
00000390: 45 4C 4E 3B 0D 55 4E 54 49 4C 20 67 65 74 61 6C |ELN;.UNTIL getal|
000003A0: 3D 20 32 37 3B 0D 45 4E 44 2E 0D |= 27;.END.. |
PROGRAM ROMCIJF;.TYPE. ROMTYPE = STRIN
G[40];.VAR. GETAL: INTEGER;. ROMCIJF
: ROMTYPE;.BEGIN;.PROCEDURE ROMEINCIJF(V
AR GETAL: INTEGER; VAR ROMCIJF: ROMTYPE)
;.CONST;. W: ARRAY[1..7] OF INTEGER=(1
000, 500, 100, 50, 10, 5, 1);. CHA: ARR
AY[1..7] OF CHAR= 'MDCLXVI';.VAR;. M, N
, X: INTEGER;.BEGIN;. X:= GETAL; M:= 1
;. WHILE X>0 DO;. BEGIN;. IF X-
W(M)<0 THEN;. BEGIN:. N:=7;.
WHILE N>=(2*((M+1) DIV 2)+1) DO;
. BEGIN;. IF X-W[M]+W[N]
>=0 THEN. BEGIN. X:=
X-W[M]+W[N];. ROMCIJF:= ROMC
IJF+ CHA[N] +CHA[M];. END;.
N:= N-2. END;. M:= M
+1. END;. ELSE;. BEGIN;.
X:= X-W[M]; ROMCIJF:= ROMCIJF +C
HA[M];. END;. END;.END;.:.BEGIN.
REPEAT;.ROMCIJF:= '';.WRITE ('VOER GEHEE
L GETAL IN (TOT 4000)');.READ(GETAL); WR
ITELN;.ROMEINCIJF (GETAL, ROMCIJF);.WRIT
ELN(GETAL,' = ',ROMCIJF); WRITELN;.UNT
IL GETAL= 27;.END..
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL