{(c) 2001 Emur http://emur.org} {Program test znalosti: Po zadani odpovedi na danou otazku program vypise spravne reseni a nakonec Vas oznamkuje 1-5 jako ve skole. Velice jednoduche pridavani dalsich otazek diky constante "az". Program pouziva textovy soubor "otazky.txt"} program test_znalosti; uses crt; type Thadam= array [1..100] of string; Phadam= ^Thadam; var hadam: Phadam; {hadani uzivatele} vel: word; {velikost pole} i,spravne: byte; key: char; {pro readkey} otazky: text; s: string[1]; s2: string; {obsah souboru s ot.} procedure znamkovani(znamka:byte); {pro zaverecne oznamkovani} begin write(' Z ',vel,' otazek jsi uhadnul ',spravne,'. Davam Ti ',znamka,'.') end; label uvod; begin uvod: clrscr; textcolor(white); gotoxy(67,25); {logo} write('(C) EmuR 2001'); gotoxy(1,1); {logo konec} textbackground(blue); writeln(' Emuruv test znalosti '); writeln(' ---------------------- '); textbackground(black); writeln; writeln(' Na otazky odpovidejte stiskem klaves a/n. ESC konec.'); writeln; assign(otazky,'otazky.txt'); {prirazeni prom., otevreni souboru} vel:=0; {velikost pole=0} {$I-} reset(otazky); {$I+} if IOResult<>0 then begin rewrite(otazky); writeln(' Vytvoril jsem pro Tebe soubor s otazkami "otazky.txt"'); writeln(' Nyni do neho napis lib. pocet otazek, kazdou na jeden radek'); writeln(otazky,'Sem napiste otazky ci vety na ktere se da odpovedet ano / ne'); writeln(otazky,'Napr.: "a Je Emur chytry?"'); writeln(otazky,'Prvni pismeno odpovida spravne odpovedi (ano / ne)'); close(otazky); readkey; halt; end else {spocitani velikosti pole} begin while not eof(otazky) do begin readln(otazky,s2); vel:=vel+1; end; close(otazky); end; Getmem(hadam,vel); {prirazeni pameti podle poctu otazek} reset(otazky); spravne:=0; {pocitani spravnych otazek=0} for i:=1 to vel do {zadani otazek} begin textcolor(yellow); write(' ',i,'.'); {cislo otazky} textcolor(white); readln(otazky,s,s2); write(s2,' '); {zadani otazky} hadam^[i]:=readkey; {nacteni odpovedi} if s=hadam^[i] then {je odpoved spravne?} begin gotoxy(55,wherey); writeln('Spravne'); spravne:=spravne+1; end else if hadam^[i]=chr(27) then halt(1) else {odpoved je spatne} begin gotoxy(55,wherey); writeln('Spatne'); end; end; close(otazky); FreeMem(hadam,vel); writeln;writeln; {vyhodnoceni testu} textcolor(yellow); if vel=spravne then {5 vetvi pro oznamkovani} write(' GRATULUJI, uhadnul jsi vsechny otazky! Davam Ti jednicku!') else if vel-spravne=1 then znamkovani(2) {vlozeni znamky jako parametr procedury} else if vel-spravne=2 then znamkovani(3) else if vel-spravne=3 then znamkovani(4) else write(' Uhadnul jsi prilis malo otazek. Davam Ti petku.'); writeln;writeln; textcolor(yellow+blink); write(' Opakovat? A/N '); {Opakovani programu} key:=readkey; case key of 'a','A', #13: goto uvod; 'n','N', #27: halt(1); end; end.