|
|
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 - metrics - 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«
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»