Program zkouší uživatele z matematických příkladů

Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Kategórie: KMP (Programy mladých programátorů)

Autor: Pavel Paták
web: www.webpark.cz/programar

Program: Matika_test.pas
Soubor exe: Matika_test.exe

Program zkouší uživatele z matematických příkladů Sčítaní, odečítaní, násobení, umocnování. Z testování vypočte známku.
{ MATIKA_TEST.PAS                         Copyright (c) Pavel Patak }
{ Program skousi uzivatele z matematickych prikladu:                }
{ Scitani, odecitani, nasobeni, umocnovani.                         }
{ Z testovani vypocte znamku.                                       }
{                                                                   }
{ Datum:28.10.2004                             http://www.trsek.com }
 
Program ZkouskaZMatiky;
const PocetPrikladu = 20;
var PocetChyb   : Integer;
    T,A,B,V,Z,I : Integer; {Typ prikladu,a,b, vysledek, zadani - zde vidite ukazku chybne pojmenovych promennych...}
    {Na vysvetleni jejich vyznamu je zapotrebi pouzit komentaru!!!}
Begin
 Randomize;
 for I:=1 to PocetPrikladu do
  begin
   T:=Random(4);
   case T of
   0: begin
       A:=Random(100);
       B:=Random(200)-100;
       Write(A);
       if B < 0 then Write(' - ',-B,' = ') else Write(' + ',B,' = ');
       V:=A+B;
      end;
   1: begin
       A:=Random(10);
       B:=Random(10);
       V:=A*B;
       Write(A,' * ',B,' = ');
      end;
   2: begin
       V:=Random(10);
       B:=Random(10);
       if B=0 then Inc(B); {Nulou nelze delit}
       A:=V*B;
       Write(A,' / ',B,' = ');
      end;
   3: begin
       A:=Random(20);
       B:=2;
       V:=A*A;
       Write(A,' ^ 2 = '); {Umocnovani na druhou}
      end;
  end;
  Readln(Z);
  if Z<>V then
   Begin
    Writeln('Chyba, je to : ',V);
    Inc(PocetChyb);
   End
  else
   Writeln('Spravne'); {Neskodilo by hlasky trochu obmenovat}
 end;
 Writeln;
 Writeln('Pocet prikladu  : ',PocetPrikladu);
 Writeln('Pocet chyb      : ',PocetChyb);
 PocetChyb:=(PocetChyb * 5) div PocetPrikladu+1; {Snad je to dobre, nebyl cas testovat}
 if PocetChyb > 5 then PocetChyb:=5;
 Writeln;
 Writeln('Vysledna znamka : ',PocetChyb);
 Readln;
End.