|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 3328 (0xd00) Names: »IDENTIFI.PAS«
└─⟦f983c2ef3⟧ Bits:30004681 Pascal opgaver (Butler) └─⟦this⟧ »IDENTIFI.PAS«
0x000…020 (0,) 50 52 4f 47 52 41 4d 20 69 64 65 6e 74 69 66 69 3b 0d 0a 0d 0a 28 2a 20 44 65 74 74 65 20 70 72 ┆PROGRAM identifi; (* Dette pr┆ 0x020…040 6f 67 72 61 6d 20 66 6f 72 75 64 73 7b 74 74 65 72 2c 20 61 74 20 73 74 61 6e 64 61 72 64 69 64 ┆ogram forudsætter, at standardid┆ 0x040…060 65 6e 74 69 66 69 65 72 6e 65 20 65 72 20 62 6c 65 76 65 74 20 69 6e 64 6c 7b 73 74 20 2a 29 0d ┆entifierne er blevet indlæst *) ┆ 0x060…080 0a 28 2a 20 69 20 66 69 6c 65 6e 20 49 44 45 4e 54 49 2e 44 41 54 20 69 20 61 6c 66 61 62 65 74 ┆ (* i filen IDENTI.DAT i alfabet┆ 0x080…0a0 69 73 6b 20 72 7b 6b 6b 65 66 7c 6c 67 65 20 76 65 64 20 68 6a 7b 6c 70 20 61 66 20 70 72 6f 67 ┆isk rækkefølge ved hjælp af prog┆ 0x0a0…0c0 72 61 6d 6d 65 74 20 20 20 2a 29 0d 0a 28 2a 20 49 44 45 4e 54 49 46 49 2e 48 4c 50 20 20 20 20 ┆rammet *) (* IDENTIFI.HLP ┆ 0x0c0…0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ┆ ┆ 0x0e0…100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 29 0d 0a 0d 0a 20 20 43 4f 4e ┆ *) CON┆ 0x100…120 53 54 0d 0a 20 20 20 20 62 6f 67 73 74 61 76 65 72 20 3a 20 53 45 54 20 4f 46 20 43 48 41 52 20 ┆ST bogstaver : SET OF CHAR ┆ 0x120…140 3d 20 28 2e 27 41 27 20 2e 2e 20 27 5a 27 2e 29 3b 0d 0a 20 20 20 20 0d 0a 20 20 54 59 50 45 0d ┆= (.'A' .. 'Z'.); TYPE ┆ 0x140…160 0a 20 20 20 20 73 74 72 31 30 20 3d 20 53 54 52 49 4e 47 28 2e 31 30 2e 29 3b 0d 0a 20 20 20 20 ┆ str10 = STRING(.10.); ┆ 0x160…180 73 74 72 31 34 20 3d 20 53 54 52 49 4e 47 28 2e 31 34 2e 29 3b 0d 0a 20 20 20 20 73 74 72 32 30 ┆str14 = STRING(.14.); str20┆ 0x180…1a0 20 3d 20 53 54 52 49 4e 47 28 2e 32 30 2e 29 3b 0d 0a 20 20 20 20 73 74 72 38 30 20 3d 20 53 54 ┆ = STRING(.20.); str80 = ST┆ 0x1a0…1c0 52 49 4e 47 28 2e 38 30 2e 29 3b 0d 0a 20 20 20 20 69 64 65 6e 74 69 66 69 66 69 6c 20 3d 20 46 ┆RING(.80.); identififil = F┆ 0x1c0…1e0 49 4c 45 20 4f 46 20 73 74 72 31 30 3b 0d 0a 20 20 20 20 69 64 65 6e 74 69 66 69 65 72 74 61 62 ┆ILE OF str10; identifiertab┆ 0x1e0…200 65 6c 20 3d 20 41 52 52 41 59 28 2e 31 20 2e 2e 20 31 33 30 2e 29 20 4f 46 20 73 74 72 31 30 3b ┆el = ARRAY(.1 .. 130.) OF str10;┆ 0x200…220 (1,) 0d 0a 20 20 20 20 0d 0a 20 20 56 41 52 0d 0a 20 20 20 20 69 6e 64 6e 61 76 6e 2c 20 75 64 6e 61 ┆ VAR indnavn, udna┆ 0x220…240 76 6e 20 3a 20 73 74 72 31 34 3b 0d 0a 20 20 20 20 69 6e 64 66 69 6c 2c 20 75 64 66 69 6c 20 3a ┆vn : str14; indfil, udfil :┆ 0x240…260 20 54 45 58 54 3b 0d 0a 20 20 20 20 64 61 74 61 66 69 6c 20 3a 20 69 64 65 6e 74 69 66 69 66 69 ┆ TEXT; datafil : identififi┆ 0x260…280 6c 3b 0d 0a 20 20 20 20 6c 69 6e 69 65 20 3a 20 73 74 72 38 30 3b 0d 0a 20 20 20 20 6f 72 64 5f ┆l; linie : str80; ord_┆ 0x280…2a0 20 3a 20 73 74 72 32 30 3b 0d 0a 20 20 20 20 63 68 20 3a 20 43 48 41 52 3b 0d 0a 20 20 20 20 69 ┆ : str20; ch : CHAR; i┆ 0x2a0…2c0 2c 20 6a 2c 20 73 74 61 72 74 2c 20 73 6c 75 74 2c 20 74 61 62 65 6c 6c 61 65 6e 67 64 65 20 3a ┆, j, start, slut, tabellaengde :┆ 0x2c0…2e0 20 49 4e 54 45 47 45 52 3b 0d 0a 20 20 20 20 74 61 62 65 6c 20 3a 20 69 64 65 6e 74 69 66 69 65 ┆ INTEGER; tabel : identifie┆ 0x2e0…300 72 74 61 62 65 6c 3b 0d 0a 20 20 0d 0a 20 20 46 55 4e 43 54 49 4f 4e 20 62 69 6e 73 6f 65 67 28 ┆rtabel; FUNCTION binsoeg(┆ 0x300…320 73 6f 65 67 65 6f 72 64 20 3a 20 73 74 72 32 30 29 20 3a 20 42 4f 4f 4c 45 41 4e 3b 0d 0a 20 20 ┆soegeord : str20) : BOOLEAN; ┆ 0x320…340 20 20 20 20 20 20 0d 0a 20 20 20 20 56 41 52 0d 0a 20 20 20 20 20 20 62 75 6e 64 2c 20 74 6f 70 ┆ VAR bund, top┆ 0x340…360 2c 20 6d 69 64 74 20 3a 20 49 4e 54 45 47 45 52 3b 0d 0a 20 20 20 20 0d 0a 20 20 20 20 42 45 47 ┆, midt : INTEGER; BEG┆ 0x360…380 49 4e 0d 0a 20 20 20 20 20 20 62 75 6e 64 20 3a 3d 20 31 3b 0d 0a 20 20 20 20 20 20 74 6f 70 20 ┆IN bund := 1; top ┆ 0x380…3a0 3a 3d 20 74 61 62 65 6c 6c 61 65 6e 67 64 65 3b 0d 0a 20 20 20 20 20 20 52 45 50 45 41 54 0d 0a ┆:= tabellaengde; REPEAT ┆ 0x3a0…3c0 20 20 20 20 20 20 20 20 6d 69 64 74 20 3a 3d 20 28 74 6f 70 20 2b 20 62 75 6e 64 29 20 44 49 56 ┆ midt := (top + bund) DIV┆ 0x3c0…3e0 20 32 3b 0d 0a 20 20 20 20 20 20 20 20 49 46 20 73 6f 65 67 65 6f 72 64 20 3e 20 74 61 62 65 6c ┆ 2; IF soegeord > tabel┆ 0x3e0…400 28 2e 6d 69 64 74 2e 29 20 0d 0a 20 20 20 20 20 20 20 20 20 20 54 48 45 4e 20 62 75 6e 64 20 3a ┆(.midt.) THEN bund :┆ 0x400…420 (2,) 3d 20 6d 69 64 74 20 2b 20 31 0d 0a 20 20 20 20 20 20 20 20 20 20 45 4c 53 45 20 74 6f 70 20 3a ┆= midt + 1 ELSE top :┆ 0x420…440 3d 20 6d 69 64 74 20 2d 20 31 3b 0d 0a 20 20 20 20 20 20 55 4e 54 49 4c 20 28 73 6f 65 67 65 6f ┆= midt - 1; UNTIL (soegeo┆ 0x440…460 72 64 20 3d 20 74 61 62 65 6c 28 2e 6d 69 64 74 2e 29 29 20 4f 52 20 28 74 6f 70 20 3c 20 62 75 ┆rd = tabel(.midt.)) OR (top < bu┆ 0x460…480 6e 64 29 3b 0d 0a 20 20 20 20 20 20 49 46 20 73 6f 65 67 65 6f 72 64 20 3d 20 74 61 62 65 6c 28 ┆nd); IF soegeord = tabel(┆ 0x480…4a0 2e 6d 69 64 74 2e 29 0d 0a 20 20 20 20 20 20 20 20 54 48 45 4e 20 62 69 6e 73 6f 65 67 20 3a 3d ┆.midt.) THEN binsoeg :=┆ 0x4a0…4c0 20 54 52 55 45 0d 0a 20 20 20 20 20 20 20 20 45 4c 53 45 20 62 69 6e 73 6f 65 67 20 3a 3d 20 46 ┆ TRUE ELSE binsoeg := F┆ 0x4c0…4e0 41 4c 53 45 3b 0d 0a 20 20 20 20 45 4e 44 3b 0d 0a 20 20 0d 0a 20 20 42 45 47 49 4e 0d 0a 20 20 ┆ALSE; END; BEGIN ┆ 0x4e0…500 20 20 57 52 49 54 45 28 43 4c 52 48 4f 4d 29 3b 0d 0a 20 20 20 20 41 53 53 49 47 4e 28 64 61 74 ┆ WRITE(CLRHOM); ASSIGN(dat┆ 0x500…520 61 66 69 6c 2c 20 27 49 44 45 4e 54 49 46 49 2e 44 41 54 27 29 3b 0d 0a 20 20 20 20 52 45 53 45 ┆afil, 'IDENTIFI.DAT'); RESE┆ 0x520…540 54 28 64 61 74 61 66 69 6c 29 3b 0d 0a 20 20 20 20 69 20 3a 3d 20 30 3b 0d 0a 20 20 20 20 57 48 ┆T(datafil); i := 0; WH┆ 0x540…560 49 4c 45 20 4e 4f 54 20 45 4f 46 28 64 61 74 61 66 69 6c 29 20 44 4f 0d 0a 20 20 20 20 20 20 42 ┆ILE NOT EOF(datafil) DO B┆ 0x560…580 45 47 49 4e 0d 0a 20 20 20 20 20 20 20 20 69 20 3a 3d 20 69 20 2b 20 31 3b 0d 0a 20 20 20 20 20 ┆EGIN i := i + 1; ┆ 0x580…5a0 20 20 20 52 45 41 44 28 64 61 74 61 66 69 6c 2c 20 74 61 62 65 6c 28 2e 69 2e 29 29 3b 0d 0a 20 ┆ READ(datafil, tabel(.i.)); ┆ 0x5a0…5c0 20 20 20 20 20 45 4e 44 3b 0d 0a 20 20 20 20 43 4c 4f 53 45 28 64 61 74 61 66 69 6c 29 3b 0d 0a ┆ END; CLOSE(datafil); ┆ 0x5c0…5e0 20 20 20 20 74 61 62 65 6c 6c 61 65 6e 67 64 65 20 3a 3d 20 69 3b 0d 0a 20 20 20 20 57 52 49 54 ┆ tabellaengde := i; WRIT┆ 0x5e0…600 45 28 27 48 76 69 6c 6b 65 6e 20 50 61 73 63 61 6c 2d 6b 69 6c 64 65 74 65 6b 73 74 20 73 6b 61 ┆E('Hvilken Pascal-kildetekst ska┆ 0x600…620 (3,) 6c 20 7b 6e 64 72 65 73 3a 20 27 29 3b 0d 0a 20 20 20 20 52 45 41 44 4c 4e 28 69 6e 64 6e 61 76 ┆l ændres: '); READLN(indnav┆ 0x620…640 6e 29 3b 0d 0a 20 20 20 20 41 53 53 49 47 4e 28 69 6e 64 66 69 6c 2c 20 69 6e 64 6e 61 76 6e 29 ┆n); ASSIGN(indfil, indnavn)┆ 0x640…660 3b 0d 0a 20 20 20 20 52 45 53 45 54 28 69 6e 64 66 69 6c 29 3b 0d 0a 20 20 20 20 57 52 49 54 45 ┆; RESET(indfil); WRITE┆ 0x660…680 4c 4e 3b 0d 0a 20 20 20 20 57 52 49 54 45 28 27 48 76 61 64 20 73 6b 61 6c 20 64 65 74 20 6b 6f ┆LN; WRITE('Hvad skal det ko┆ 0x680…6a0 72 72 69 67 65 72 65 64 65 20 70 72 6f 67 72 61 6d 20 68 65 64 64 65 3a 20 27 29 3b 0d 0a 20 20 ┆rrigerede program hedde: '); ┆ 0x6a0…6c0 20 20 52 45 41 44 4c 4e 28 75 64 6e 61 76 6e 29 3b 0d 0a 20 20 20 20 41 53 53 49 47 4e 28 75 64 ┆ READLN(udnavn); ASSIGN(ud┆ 0x6c0…6e0 66 69 6c 2c 20 75 64 6e 61 76 6e 29 3b 0d 0a 20 20 20 20 52 45 57 52 49 54 45 28 75 64 66 69 6c ┆fil, udnavn); REWRITE(udfil┆ 0x6e0…700 29 3b 0d 0a 20 20 20 20 57 52 49 54 45 4c 4e 3b 0d 0a 20 20 20 20 57 48 49 4c 45 20 4e 4f 54 20 ┆); WRITELN; WHILE NOT ┆ 0x700…720 45 4f 46 28 69 6e 64 66 69 6c 29 20 44 4f 0d 0a 20 20 20 20 20 20 42 45 47 49 4e 0d 0a 20 20 20 ┆EOF(indfil) DO BEGIN ┆ 0x720…740 20 20 20 20 20 6c 69 6e 69 65 20 3a 3d 20 27 27 3b 0d 0a 20 20 20 20 20 20 20 20 57 48 49 4c 45 ┆ linie := ''; WHILE┆ 0x740…760 20 4e 4f 54 20 45 4f 4c 4e 28 69 6e 64 66 69 6c 29 20 44 4f 0d 0a 20 20 20 20 20 20 20 20 20 20 ┆ NOT EOLN(indfil) DO ┆ 0x760…780 42 45 47 49 4e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 52 45 41 44 28 69 6e 64 66 69 6c 2c 20 ┆BEGIN READ(indfil, ┆ 0x780…7a0 63 68 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 69 65 20 3a 3d 20 6c 69 6e 69 65 ┆ch); linie := linie┆ 0x7a0…7c0 20 2b 20 63 68 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 45 4e 44 3b 0d 0a 20 20 20 20 20 20 20 20 ┆ + ch; END; ┆ 0x7c0…7e0 6c 69 6e 69 65 20 3a 3d 20 6c 69 6e 69 65 20 2b 20 27 20 27 3b 0d 0a 20 20 20 20 20 20 20 20 52 ┆linie := linie + ' '; R┆ 0x7e0…800 45 41 44 4c 4e 28 69 6e 64 66 69 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 49 46 20 4c 45 4e 28 6c ┆EADLN(indfil); IF LEN(l┆ 0x800…820 (4,) e5 e5 e5 e5 e5 e5 e5 e5 e5 e5 e5 e5 e5 e5 e5 e5 e5 e5 e5 e5 e5 e5 e5 e5 e5 e5 e5 e5 e5 e5 e5 e5 ┆ ┆ […0xf…] 0xa00…a20 (5,) 50 52 4f 47 52 41 4d 20 69 6e 74 65 72 68 79 70 3b 0d 0a 20 20 0d 0a 20 20 43 4f 4e 53 54 0d 0a ┆PROGRAM interhyp; CONST ┆ 0xa20…a40 20 20 20 20 6d 61 78 61 6e 74 61 6c 20 3d 20 32 30 30 3b 0d 0a 20 20 0d 0a 20 20 54 59 50 45 0d ┆ maxantal = 200; TYPE ┆ 0xa40…a60 0a 20 20 20 20 74 61 62 65 6c 74 79 70 65 20 3d 20 41 52 52 41 59 28 2e 31 20 2e 2e 20 6d 61 78 ┆ tabeltype = ARRAY(.1 .. max┆ 0xa60…a80 61 6e 74 61 6c 2e 29 20 4f 46 20 49 4e 54 45 47 45 52 3b 0d 0a 20 20 0d 0a 20 20 56 41 52 0d 0a ┆antal.) OF INTEGER; VAR ┆ 0xa80…aa0 20 20 20 20 74 61 62 65 6c 20 3a 20 74 61 62 65 6c 74 79 70 65 3b 0d 0a 20 20 20 20 6d 69 6e 2c ┆ tabel : tabeltype; min,┆ 0xaa0…ac0 20 6d 61 78 2c 20 69 6e 74 65 72 76 61 6c 62 72 65 64 64 65 20 3a 20 49 4e 54 45 47 45 52 3b 0d ┆ max, intervalbredde : INTEGER; ┆ 0xac0…ae0 0a 20 20 0d 0a 20 20 50 52 4f 43 45 44 55 52 45 20 66 69 6e 64 74 61 6c 28 56 41 52 20 74 61 62 ┆ PROCEDURE findtal(VAR tab┆ 0xae0…b00 65 6c 20 3a 20 74 61 62 65 6c 74 79 70 65 29 3b 0d 0a 20 20 0d 0a 20 20 20 20 56 41 52 0d 0a 20 ┆el : tabeltype); VAR ┆ 0xb00…b20 20 20 20 20 20 69 2c 20 78 2c 20 79 2c 20 7a 20 3a 20 49 4e 54 45 47 45 52 3b 0d 0a 20 20 20 20 ┆ i, x, y, z : INTEGER; ┆ 0xb20…b40 0d 0a 20 20 20 20 42 45 47 49 4e 0d 0a 20 20 20 20 20 20 46 4f 52 20 69 20 3a 3d 20 31 20 54 4f ┆ BEGIN FOR i := 1 TO┆ 0xb40…b60 20 6d 61 78 61 6e 74 61 6c 20 44 4f 0d 0a 20 20 20 20 20 20 20 20 42 45 47 49 4e 0d 0a 20 20 20 ┆ maxantal DO BEGIN ┆ 0xb60…b80 20 20 20 20 20 20 20 78 20 3a 3d 20 52 41 4e 44 4f 4d 28 34 37 29 20 2b 20 33 30 3b 0d 0a 20 20 ┆ x := RANDOM(47) + 30; ┆ 0xb80…ba0 20 20 20 20 20 20 20 20 79 20 3a 3d 20 52 41 4e 44 4f 4d 28 33 32 29 20 2b 20 32 30 3b 20 20 28 ┆ y := RANDOM(32) + 20; (┆ 0xba0…bc0 2a 20 52 65 74 20 74 69 6c 66 7b 6c 64 69 67 74 20 76 61 6c 67 74 21 20 2a 29 0d 0a 20 20 20 20 ┆* Ret tilfældigt valgt! *) ┆ 0xbc0…be0 20 20 20 20 20 20 7a 20 3a 3d 20 52 41 4e 44 4f 4d 28 31 31 29 20 2b 20 34 30 3b 0d 0a 20 20 20 ┆ z := RANDOM(11) + 40; ┆ 0xbe0…c00 20 20 20 20 20 20 20 74 61 62 65 6c 28 2e 69 2e 29 20 3a 3d 20 78 20 2b 20 79 20 2b 20 7a 3b 0d ┆ tabel(.i.) := x + y + z; ┆ 0xc00…c20 (6,) 0a 20 20 20 20 20 20 20 20 20 20 57 52 49 54 45 28 74 61 62 65 6c 28 2e 69 2e 29 20 3a 20 34 29 ┆ WRITE(tabel(.i.) : 4)┆ 0xc20…c40 3b 0d 0a 20 20 20 20 20 20 20 20 45 4e 44 3b 0d 0a 20 20 20 20 20 20 57 52 49 54 45 4c 4e 3b 20 ┆; END; WRITELN; ┆ 0xc40…c60 20 0d 0a 20 20 20 20 45 4e 44 3b 0d 0a 20 20 20 20 0d 0a 20 20 50 52 4f 43 45 44 55 52 45 20 6d ┆ END; PROCEDURE m┆ 0xc60…c80 69 6e 6d 61 78 28 56 41 52 20 6d 69 6e 2c 20 6d 61 78 20 3a 20 49 4e 54 45 47 45 52 3b 20 56 41 ┆inmax(VAR min, max : INTEGER; VA┆ 0xc80…ca0 52 20 74 61 62 65 6c 20 3a 20 74 61 62 65 6c 74 79 70 65 29 3b 0d 0a 20 20 0d 0a 20 20 20 20 56 ┆R tabel : tabeltype); V┆ 0xca0…cc0 41 52 0d 0a 20 20 20 20 20 20 69 20 3a 20 49 4e 54 45 47 45 52 3b 0d 0a 20 20 20 20 0d 0a 20 20 ┆AR i : INTEGER; ┆ 0xcc0…ce0 20 20 42 45 47 49 4e 0d 0a 20 20 20 20 20 20 6d 69 6e 20 3a 3d 20 74 61 62 65 6c 28 2e 31 2e 29 ┆ BEGIN min := tabel(.1.)┆ 0xce0…d00 3b 0d 0a 20 20 20 20 20 20 6d 61 78 20 3a 3d 20 74 61 62 65 6c 28 2e 31 2e 29 3b 0d 0a 20 20 20 ┆; max := tabel(.1.); ┆