1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
|
uses Dos,Crt;
Const TempAttente = 30; {Temps d'attente en seconde}
Type Questionnaire=Record
Question,
Reponse :String;
End;
Var cpt,i,
_h, _m, _s, _hund:Word;
reponse:String;
t:Array [1..30] Of Questionnaire;
c:char; {lire un caractere}
function TempsEcoule:Boolean;
var h, m, s, hund:Word;
temps_1,temps_2:Extended;
begin
GetTime(h,m,s,hund); {Avoir le temp actuel}
temps_1:=(_h*60*60) + (_m*60) + _s; {Avoir les secondes de debut}
temps_2:=(h*60*60) + (m*60) + s; {Avoir les secondes du temp actuel}
TempsEcoule := Abs(temps_2-temps_1) >= TempAttente;
{^--> renvoi la valeur absolue !!}
end;
procedure AfficheResultat;
begin
Write('le resultat de ce test est : ',cpt,'/30');
ReadKey;
end;
function LireReponse:Boolean;
begin
IF KeyPressed
THEN BEGIN
C:=ReadKey; {
ici le ReadKey ne sera pas impose vu que le KeyPressed
retourne la valeur TRUE
}
if C=#27
then begin
WriteLn('PROGRAMME QUITTE PAR L''UTILISATEUR');
AfficheResultat;
Delay(800);
Halt; { <-- Quitter le programme}
end
else if C=#13
then begin
if (reponse=t[i].reponse)
then Inc(cpt);
LireReponse:=True;
end
else begin
Write(C); {Afficher le caractere}
Reponse:=Reponse+C; {concatener avec la chaine Reponse}
LireReponse:=False;
end
END
ELSE LireReponse:=False;
end;
procedure LireQuestions;
begin
for i := 1 to 30 do
begin
ClrScr;
WriteLn('Lecture de la question: ',i,'/30');
ReadLn(t[i].question);
WriteLn('Lecture de la reponse: ',i,'/30');
ReadLn(t[i].reponse);
end;
end;
begin
LireQuestions;
cpt:=0;
for i := 1 to 30 do
begin
ClrScr;
WriteLn('Questionnaire: ',i,'/30');
GetTime(_h,_m,_s,_hund); {avoir le temps}
WriteLn(t[i].question);
repeat
until TempsEcoule or LireReponse;
end;
AfficheResultat;
end. |
Partager