|
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: 3200 (0xc80) Types: TextFile Names: »DIVISION.PAS«
└─⟦08ea08c61⟧ Bits:30003924 PolyPascal programmer └─ ⟦this⟧ »DIVISION.PAS« └─⟦092727b26⟧ Bits:30005927 Demoprogrammer til Pascal bog (Jet-80) └─ ⟦this⟧ »DIVISION.PAS« └─⟦3702e543b⟧ Bits:30003064 Demoprogrammer A-J til Pascal bog └─ ⟦this⟧ »DIVISION.PAS« └─⟦f983c2ef3⟧ Bits:30004681 Pascal opgaver (Butler) └─ ⟦this⟧ »DIVISION.PAS«
PROGRAM division; VAR navn : STRING(.30.); ch : CHAR; divisor, divisor1, divisor2, dividend, dividend1, dividend2, grad, antal, rigtige, forsoeg, taeller, naevner : INTEGER; fejl : BOOLEAN; FUNCTION sfd(n, m : INTEGER) : INTEGER; VAR rest : INTEGER; BEGIN (* sfd *) WHILE m > 0 DO BEGIN rest := n MOD m; n := m; m := rest; END; sfd := n; END; (* sfd *) PROCEDURE forkort(VAR taeller, naevner : INTEGER); VAR faktor : INTEGER; BEGIN (* forkort *) faktor := sfd(taeller, naevner); taeller := taeller DIV faktor; naevner := naevner DIV faktor; END; (* forkort *) BEGIN (* division *) WRITE(CLRHOM); RANDOMIZE; WRITE('Hvad hedder du: '); READLN(navn); REPEAT WRITE('Hvilken sværhedsgrad ønsker du (1 - 10): '); READLN(grad); UNTIL (1 <= grad) AND (grad <= 10); WRITELN; WRITELN('Velkommen, ', navn, '. Du får nu stillet 5 divisionsopgaver'); WRITELN; antal := 0; rigtige := 0; fejl := FALSE; REPEAT antal := antal + 1; dividend1 := RANDOM(grad + 1); dividend2 := RANDOM(grad + 1); divisor1 := RANDOM(grad) +1 ; divisor2 := RANDOM(grad) + 1; WRITELN; WRITELN(dividend1, '/', divisor1, ' + ', dividend2, '/', divisor2, ' = ?'); WRITELN; dividend := dividend1 * divisor2 + dividend2 * divisor1; divisor := divisor1 * divisor2; forkort(dividend, divisor); forsoeg := 0; REPEAT forsoeg := forsoeg + 1; WRITE('Indtast tæller: '); READLN(taeller); WRITE('Indtast nævner: '); READLN(naevner); IF (dividend = taeller) AND (divisor = naevner) THEN BEGIN WRITELN('Svaret er korrekt'); rigtige := rigtige + 1; END ELSE BEGIN fejl := TRUE; IF forsoeg < 3 THEN WRITELN('Svaret er ikke korrekt - Prøv igen:') ELSE WRITELN('Nej, det korrekte svar er ', dividend, '/', divisor); END; UNTIL (forsoeg = 3) OR ((dividend = taeller) AND (divisor = naevner)); WRITE('Tast <RETURN>: '); READLN(ch); UNTIL antal = 5; WRITELN; CASE rigtige OF 0 : WRITELN('Ikke et eneste rigtigt svar! Jamen ', navn, ' dog!'); 1 : WRITELN('Kun 1 rigtigt svar - elendigt ', navn); 2 : WRITELN('2 rigtige svar - det er ikke strålende ', navn); 3 : WRITELN('3 rigtige svar - det kunne være bedre ', navn); 4 : WRITELN('Kun et forkert svar - ikke værst ', navn); 5 : BEGIN IF fejl THEN WRITELN('Godt ', navn, ' 5 rigtige svar - omend ', 'ikke alle i første forsøg') ELSE WRITELN('Perfekt ', navn, ' - det kunne ikke være bedre!'); END; END; END. (*division *) «eof»