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 3A 0D 50 52 4F |: romtype;.:.PRO|
00000060: 43 45 44 55 52 45 20 72 6F 6D 65 69 6E 63 69 6A |CEDURE romeincij|
00000070: 66 20 28 56 41 52 20 67 65 74 61 6C 3A 20 69 6E |f (VAR getal: in|
00000080: 74 65 67 65 72 3B 20 76 61 72 20 72 6F 6D 63 69 |teger; var romci|
00000090: 6A 66 3A 20 72 6F 6D 74 79 70 65 29 3B 0D 43 4F |jf: romtype);.CO|
000000A0: 4E 53 54 0D 20 20 20 77 3A 20 41 52 52 41 59 5B |NST. w: ARRAY[|
000000B0: 31 2E 2E 37 5D 20 6F 66 20 69 6E 74 65 67 65 72 |1..7] of integer|
000000C0: 3D 28 31 30 30 30 2C 20 35 30 30 2C 20 31 30 30 |=(1000, 500, 100|
000000D0: 2C 20 35 30 2C 20 31 30 2C 20 35 2C 20 31 29 3B |, 50, 10, 5, 1);|
000000E0: 0D 20 20 63 68 61 3A 20 41 52 52 41 59 5B 31 2E |. cha: ARRAY[1.|
000000F0: 2E 37 5D 20 6F 66 20 63 68 61 72 3D 20 27 4D 44 |.7] of char= 'MD|
00000100: 43 4C 58 56 49 27 3B 0D 56 41 52 0D 20 20 6D 2C |CLXVI';.VAR. m,|
00000110: 20 6E 2C 20 78 3A 20 69 6E 74 65 67 65 72 3B 0D | n, x: integer;.|
00000120: 42 45 47 49 4E 0D 20 20 20 78 3A 3D 20 67 65 74 |BEGIN. x:= get|
00000130: 61 6C 3B 20 6D 3A 3D 20 31 3B 0D 20 20 20 57 48 |al; m:= 1;. WH|
00000140: 49 4C 45 20 78 3E 30 20 64 6F 0D 62 65 67 69 6E |ILE x>0 do.begin|
00000150: 0D 20 20 20 20 20 20 49 46 20 78 2D 77 28 6D 29 |. IF x-w(m)|
00000160: 3C 30 20 54 48 45 4E 0D 20 20 20 20 20 20 42 45 |<0 THEN. BE|
00000170: 47 49 4E 0D 20 20 20 20 20 20 20 20 6E 3A 3D 20 |GIN. n:= |
00000180: 37 3B 0D 20 20 20 20 20 20 20 20 57 48 49 4C 45 |7;. WHILE|
00000190: 20 6E 3E 3D 28 32 2A 28 28 6D 2B 31 29 20 64 69 | n>=(2*((m+1) di|
000001A0: 76 20 32 29 2B 31 29 20 64 6F 0D 20 20 20 20 20 |v 2)+1) do. |
000001B0: 20 20 20 42 45 47 49 4E 0D 20 20 20 20 20 20 20 | BEGIN. |
000001C0: 20 20 20 49 46 20 78 2D 77 5B 6D 5D 2B 77 5B 6E | IF x-w[m]+w[n|
000001D0: 5D 3E 3D 30 20 54 48 45 4E 0D 20 20 20 20 20 20 |]>=0 THEN. |
000001E0: 20 20 20 20 42 45 47 49 4E 0D 20 20 20 20 20 20 | BEGIN. |
000001F0: 20 20 20 20 20 20 78 3A 3D 20 78 2D 77 5B 6D 5D | x:= x-w[m]|
00000200: 2B 77 5B 6E 5D 3B 0D 20 20 20 20 20 20 20 20 20 |+w[n];. |
00000210: 20 20 20 72 6F 6D 63 69 6A 66 3A 3D 20 72 6F 6D | romcijf:= rom|
00000220: 63 69 6A 66 2B 20 63 68 61 5B 6E 5D 20 2B 63 68 |cijf+ cha[n] +ch|
00000230: 61 5B 6D 5D 3B 0D 20 20 20 20 20 20 20 20 20 20 |a[m];. |
00000240: 45 4E 44 3B 0D 20 20 20 20 20 20 20 20 20 20 6E |END;. n|
00000250: 3A 3D 20 6E 2D 32 0D 20 20 20 20 20 20 20 20 45 |:= n-2. E|
00000260: 6E 64 3B 0D 20 20 20 20 20 20 20 20 6D 3A 3D 20 |nd;. m:= |
00000270: 6D 2B 31 0D 20 20 20 20 20 20 45 4E 44 3B 0D 20 |m+1. END;. |
00000280: 20 20 20 20 20 45 4C 53 45 0D 20 20 20 20 20 20 | ELSE. |
00000290: 42 45 47 49 4E 0D 20 20 20 20 20 20 20 20 20 78 |BEGIN. x|
000002A0: 3A 3D 20 78 2D 77 5B 6D 5D 3B 20 72 6F 6D 63 69 |:= x-w[m]; romci|
000002B0: 6A 66 3A 3D 20 72 6F 6D 63 69 6A 66 20 2B 63 68 |jf:= romcijf +ch|
000002C0: 61 5B 6D 5D 3B 0D 20 20 20 20 20 20 45 4E 44 3B |a[m];. END;|
000002D0: 0D 20 20 20 20 45 4E 44 0D 45 4E 44 3B 0D 62 65 |. END.END;.be|
000002E0: 67 69 6E 0D 3A 0D 52 45 50 45 41 54 0D 72 6F 6D |gin.:.REPEAT.rom|
000002F0: 63 69 6A 66 3A 3D 20 27 27 3B 0D 57 52 49 54 45 |cijf:= '';.WRITE|
00000300: 20 28 27 56 6F 65 72 20 67 65 68 65 65 6C 20 67 | ('Voer geheel g|
00000310: 65 74 61 6C 20 69 6E 20 28 74 6F 74 20 34 30 30 |etal in (tot 400|
00000320: 30 29 27 29 3B 0D 52 45 41 44 28 67 65 74 61 6C |0)');.READ(getal|
00000330: 29 3B 20 57 52 49 54 45 4C 4E 3B 0D 72 6F 6D 65 |); WRITELN;.rome|
00000340: 69 6E 63 69 6A 66 20 28 67 65 74 61 6C 2C 20 72 |incijf (getal, r|
00000350: 6F 6D 63 69 6A 66 29 3B 0D 57 52 49 54 45 4C 4E |omcijf);.WRITELN|
00000360: 28 67 65 74 61 6C 2C 27 20 20 3D 20 20 27 2C 72 |(getal,' = ',r|
00000370: 6F 6D 63 69 6A 66 29 3B 20 57 52 49 54 45 4C 4E |omcijf); WRITELN|
00000380: 3B 0D 55 4E 54 49 4C 20 67 65 74 61 6C 3D 20 32 |;.UNTIL getal= 2|
00000390: 37 0D 45 4E 44 2E 0D |7.END.. |
PROGRAM ROMCIJF;.TYPE. ROMTYPE = STRIN
G[40];.VAR. GETAL: INTEGER;. ROMCIJF
: ROMTYPE;.:.PROCEDURE ROMEINCIJF (VAR G
ETAL: INTEGER; VAR ROMCIJF: ROMTYPE);.CO
NST. W: ARRAY[1..7] OF INTEGER=(1000,
500, 100, 50, 10, 5, 1);. CHA: ARRAY[1.
.7] OF CHAR= 'MDCLXVI';.VAR. M, N, X: I
NTEGER;.BEGIN. X:= GETAL; M:= 1;. WH
ILE 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:= ROMCIJF+ CHA[N] +CH
A[M];. END;. N:= N-2.
END;. M:= M+1. END;.
ELSE. BEGIN. X:= X-W[M
]; ROMCIJF:= ROMCIJF +CHA[M];. END;
. END.END;.BEGIN.:.REPEAT.ROMCIJF:= '
';.WRITE ('VOER GEHEEL GETAL IN (TOT 400
0)');.READ(GETAL); WRITELN;.ROMEINCIJF (
GETAL, ROMCIJF);.WRITELN(GETAL,' = ',R
OMCIJF); WRITELN;.UNTIL GETAL= 27.END..
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL