|
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: 9984 (0x2700) Types: TextFile Names: »PERSONER.PAS«
└─⟦08ea08c61⟧ Bits:30003924 PolyPascal programmer └─ ⟦this⟧ »PERSONER.PAS«
PROGRAM personer; CONST max = 100; TYPE str30 = STRING(.30.); str3 = STRING(.3.); koentype = (mand, kvinde); haarfarvetype = (lysblond, moerkeblond, hvidt, brunt, sort, roedt, graat, skaldet); oejenfarvetype = (blaa, graa, brune, groenne); personpost = RECORD navn : str30; koen : koentype; hoejde : INTEGER; vaegt : INTEGER; haarfarve : haarfarvetype; oejenfarve : oejenfarvetype; END; personregister = ARRAY(.1 .. max.) OF personpost; VAR person : personregister; antal : INTEGER; PROCEDURE retur; VAR ch : CHAR; BEGIN (* retur *) WRITELN; WRITE('Tast <RETURN>: '); BUFLEN := 0; READLN; END; (* retur *) PROCEDURE soegkoen; VAR i : INTEGER; soeg_koen : koentype; ch : CHAR; fundet : BOOLEAN; BEGIN (* soegkoen *) REPEAT GOTOXY(0, 20); WRITE(CLREOL, 'Tast køn (m/k): '); BUFLEN := 1; READ(ch); UNTIL (ch = 'm') OR (ch = 'k'); IF ch = 'm' THEN soeg_koen := mand ELSE soeg_koen := kvinde; GOTOXY(0, 22); WRITELN('Følgende personer er af det søgte køn:'); fundet := FALSE; FOR i := 1 TO antal DO IF person(.i.).koen = soeg_koen THEN BEGIN WRITELN(person(.i.).navn); fundet := TRUE; END; IF NOT fundet THEN WRITELN('Der er ingen personer af det søgte køn'); retur; END; (* soegkoen *) PROCEDURE soeghoejde; VAR i, soeg_hoejde, test : INTEGER; fundet : BOOLEAN; str : str3; BEGIN (* soeghoejde *) REPEAT GOTOXY(0, 20); WRITE(CLREOL, 'Tast højde: '); BUFLEN := 3; READLN(str); VAL(str, soeg_hoejde, test); UNTIL (test = 0) AND (100 <= soeg_hoejde) AND (soeg_hoejde <= 220); GOTOXY(0, 22); WRITELN('Følgende personer har højden ', soeg_hoejde, ':'); fundet := FALSE; FOR i := 1 TO antal DO IF person(.i.).hoejde = soeg_hoejde THEN BEGIN WRITELN(person(.i.).navn); fundet := TRUE; END; IF NOT fundet THEN WRITELN('Der er ingen personer med denne højde'); retur; END; (* soeghoejde *) PROCEDURE soegvaegt; VAR i, soeg_vaegt, test : INTEGER; fundet : BOOLEAN; str : str3; BEGIN (* soegvaegt *) REPEAT GOTOXY(0, 20); WRITE(CLREOL, 'Tast vaegt: '); BUFLEN := 3; READLN(str); VAL(str, soeg_vaegt, test); UNTIL (test = 0) AND (30 <= soeg_vaegt) AND (soeg_vaegt <= 200); GOTOXY(0, 22); WRITELN('Følgende personer har vægten ', soeg_vaegt, ':'); fundet := FALSE; FOR i := 1 TO antal DO IF person(.i.).vaegt = soeg_vaegt THEN BEGIN WRITELN(person(.i.).navn); fundet := TRUE; END; IF NOT fundet THEN WRITELN('Der er ingen personer med denne vægt'); retur; END; (* soegvaegt *) PROCEDURE soeghaarfarve; VAR i : INTEGER; soeg_haarfarve : haarfarvetype; ch : CHAR; fundet : BOOLEAN; BEGIN (* soeghaarfarve *) REPEAT GOTOXY(0, 20); WRITELN('Tast hårfarve: 1. Lysblond 2. Mørkeblond 3. Hvidt '); WRITE(CLREOL, '4. Brunt 5. Sort 6. Rødt 7. Gråt 8. Skaldet: '); BUFLEN := 1; READ(ch); UNTIL ('1' <= ch) AND (ch <= '8'); CASE ch OF '1' : soeg_haarfarve := lysblond; '2' : soeg_haarfarve := moerkeblond; '3' : soeg_haarfarve := hvidt; '4' : soeg_haarfarve := brunt; '5' : soeg_haarfarve := sort; '6' : soeg_haarfarve := roedt; '7' : soeg_haarfarve := graat; '8' : soeg_haarfarve := skaldet; END; WRITELN; WRITELN('Følgende personer har denne hårfarve:'); fundet := FALSE; FOR i := 1 TO antal DO IF person(.i.).haarfarve = soeg_haarfarve THEN BEGIN WRITELN(person(.i.).navn); fundet := TRUE; END; IF NOT fundet THEN WRITELN('Der er ingen personer med denne hårfarve'); retur; END; (* soeghaarfarve *) PROCEDURE soegoejenfarve; VAR i : INTEGER; soeg_oejenfarve : oejenfarvetype; ch : CHAR; fundet : BOOLEAN; BEGIN (* soegoejenfarve *) REPEAT GOTOXY(0, 20); WRITE(CLREOL); WRITE('Tast øjenfarve: 1. Blå 2. Grå 3. Brune 4. Grønne: '); BUFLEN := 1; WRITE(CHR(8)); READLN(ch); UNTIL ('1' <= ch) AND (ch <= '4'); CASE ch OF '1' : soeg_oejenfarve := blaa; '2' : soeg_oejenfarve := graa; '3' : soeg_oejenfarve := brune; '4' : soeg_oejenfarve := groenne; END; WRITELN; WRITELN('Følgende personer har denne øjenfarve:'); fundet := FALSE; FOR i := 1 TO antal DO IF person(.i.).oejenfarve = soeg_oejenfarve THEN BEGIN WRITELN(person(.i.).navn); fundet := TRUE; END; IF NOT fundet THEN WRITELN('Der er ingen personer med denne øjenfarve'); retur; END; (* soegoejenfarve *) PROCEDURE indlaes; VAR i, test : INTEGER; str : str3; ch : CHAR; BEGIN (* indlaes *) WRITE(CLRHOM); i := 0; WRITELN('Indtastning af oplysninger til personkartotek:'); WRITELN; REPEAT i := i + 1; WITH person(.i.) DO BEGIN WRITE('Indtast navn (# stopper): '); BUFLEN := 30; READLN(navn); IF navn <> '#' THEN BEGIN WRITELN; WRITE('Tast køn (m/k): '); REPEAT WRITE(CHR(8), ' ', CHR(8)); BUFLEN := 1; READ(ch); UNTIL (ch = 'm') OR (ch = 'k'); IF ch = 'm' THEN koen := mand ELSE koen := kvinde; WRITELN; WRITELN; REPEAT WRITE('Tast højde: '); BUFLEN := 3; READLN(str); VAL(str, hoejde, test); UNTIL (test = 0) AND (100 <= hoejde) AND (hoejde <= 220); WRITELN; REPEAT WRITE('Tast vaegt: '); BUFLEN := 3; READLN(str); VAL(str, vaegt, test); UNTIL (test = 0) AND (30 <= vaegt) AND (vaegt <= 200); WRITELN; WRITELN('Tast hårfarve: 1. Lysblond 2. Mørkeblond ', '3. Hvidt '); WRITE('4. Brunt 5. Sort 6. Rødt 7. Gråt 8. Skaldet: '); REPEAT BUFLEN := 1; WRITE(CHR(8), ' ', CHR(8)); READ(ch); UNTIL ('1' <= ch) AND (ch <= '8'); CASE ch OF '1' : haarfarve := lysblond; '2' : haarfarve := moerkeblond; '3' : haarfarve := hvidt; '4' : haarfarve := brunt; '5' : haarfarve := sort; '6' : haarfarve := roedt; '7' : haarfarve := graat; '8' : haarfarve := skaldet; END; WRITELN; WRITELN; WRITE('Tast øjenfarve: 1. Blå 2. Grå 3. Brune ', '4. Grønne: '); REPEAT BUFLEN := 1; WRITE(CHR(8), ' ', CHR(8)); READ(ch); UNTIL ('1' <= ch) AND (ch <= '4'); CASE ch OF '1' : oejenfarve := blaa; '2' : oejenfarve := graa; '3' : oejenfarve := brune; '4' : oejenfarve := groenne; END; WRITELN; WRITELN; END; END; UNTIL (person(.i.).navn = '#') OR (i = max); IF person(.i.).navn = '#' THEN antal := i - 1 ELSE antal := max; END; (* indlaes *) PROCEDURE menu; VAR ch : CHAR; BEGIN (* menu *) REPEAT WRITE(CLRHOM); GOTOXY(5, 2); WRITE('Hvad ønsker du at søge efter:'); GOTOXY(5, 5); WRITE('1. Køn'); GOTOXY(5, 7); WRITE('2. Højde'); GOTOXY(5, 9); WRITE('3. Vægt'); GOTOXY(5, 11); WRITE('4. Hårfarve'); GOTOXY(5, 13); WRITE('5. Øjenfarve'); GOTOXY(5, 15); WRITE('6. Afslutte programmet'); REPEAT GOTOXY(5, 18); WRITE('Tast nummeret på den ønskede funktion: '); WRITE(CHR(8), ' ', CHR(8)); (* Backspace *) BUFLEN := 1; READ(ch); UNTIL ('1' <= ch) AND (ch <= '6'); CASE ch OF '1' : soegkoen; '2' : soeghoejde; '3' : soegvaegt; '4' : soeghaarfarve; '5' : soegoejenfarve; END; UNTIL ch = '6'; WRITELN; END; (* menu *) BEGIN (* personer *) indlaes; menu; END. (* personer *) «eof»