{Vzorová øešení - Pøíklady pro zaèáteèníky III}

Program Deleni;
{Zada uzivateli 25 prikladu na deleni}
Var           I:Integer;
      PocetChyb:Integer;
   a,b,vysledek:Integer;
   Odpoved     :Integer;

Begin
   PocetChyb:=0;
   Randomize;
   For I:=1 to 25 do
     Begin
        Vysledek:=Random(11); {Vygenerujeme-li prvne obe cisla, nemusi byt vysledek celociselny}
        B:=Random(11);
        if B=0 then B:=B+1; {Nulou nelze delit}
        A:=B*Vysledek;
        Write(A,' / ', B, ' = ');
        Readln(Odpoved);
        if Odpoved<>Vysledek then
           begin
            Writeln('Chyba, spravna odpoved zni ',Vysledek);
            PocetChyb:=PocetChyb+1;
           end
        else
           Writeln('Spravna odpoved');
     End;
   Writeln;
   Writeln('Pocet chyb : ',PocetChyb);
   PocetChyb:=(PocetChyb div 5)+1; {Vypocet znamky, k jejimu ulozeni pouzijeme promennou PocetChyb}
   if PocetChyb > 5 then PocetChyb:=5; {Pokud by bylo vsechno spatne}
   Writeln('Vase vysledna znamka : ',PocetChyb);
   Readln;
End.

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Program AhojVsude;
{Zaplni celou obrazovku nesmyslnym napisem}
Var I:Integer;
Begin
 Writeln('Caute');
 For I:=1 to 980 do
  Write('Ahoj');
 Readln;
End.

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Program Prvocislo;
{Zjisti, zda je zadane cislo prvocislem}
Var P,I : Integer;
    Delitelu : Integer;
Begin
 Write('Zadej cislo : ');
 Readln(P);
 Delitelu:=0;
 Writeln;

 For I:=2 to Trunc(Sqrt(p)) do  {Hledame delitele}
  if (P mod I = 0) then Delitelu:=Delitelu+1;
 if (Delitelu = 0) and (P>1) then Writeln('Je to prvocislo.') else Writeln('Neni to prvocislo.');
 {Cislo mensi nez 2 nemuze byt prvocislem, bez ohledu na pocet delitelu}
Readln;
End.

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Program Delitel;
{Vypocte nejvetsiho spolecneho delitele pomoci te nejhorsi mozne metody
{schvalne, prijdete na lepsi? Bude uvedena az v sekci pro pokrocile, ale
naprogramovat byste ji zvladli uz ted}
Var a,b,D,I : Integer;
Begin
 Write('Zadej dve cisla a,b : ');
 Readln(a,b);
  for I:=1 to a do
   if (a mod I = 0) and (B mod I = 0) then D:=I;
 Writeln;
 Writeln('D(',a,',',b,') = ',D);
 Readln;
End.

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Program SudaLicha;
{Rozhodne, zda je zadane cislo sude nebo liche}
Var A : Integer;
Begin
 Writeln('Zadej cislo : ');
 Readln(A);
 Writeln;
 if Odd(A) then Writeln('Cislo je liche.') else Writeln('Zadane cislo je sude.'); {mozne i if (A mod 2 = 1) then ...}
 Readln;
End.

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Program SoucetRozdil;
Var           I:Integer;
      PocetChyb:Integer;
   a,b,vysledek:Integer;
   Odpoved     :Integer;

Begin
   PocetChyb:=0;
   Randomize;
   For I:=1 to 25 do
     Begin
        A:=Random(50);
        B:=Random(100)-50; {Nemusime rozlisovat scitani a odcitani, B vyjde v rozmezi -50..49, zaporna hodnota znamena odcitani}
        Vysledek:=A+B;
        if B>=0 then Write(A,' + ', B, ' = ') else Write(A,' - ', -B, ' = ');
        Readln(Odpoved);
        if Odpoved<>Vysledek then
           begin
            Writeln('Chyba, spravna odpoved zni ',Vysledek);
            PocetChyb:=PocetChyb+1;
           end
        else
           Writeln('Spravna odpoved');
     End;
   Writeln;
   Writeln('Pocet chyb : ',PocetChyb);
   PocetChyb:=(PocetChyb div 5)+1; {Vypocet znamky, k jejimu ulozeni pouzijeme promennou PocetChyb}
   if PocetChyb > 5 then PocetChyb:=5; {Pokud by bylo vsechno spatne}
   Writeln('Vase znamka cini : ',PocetChyb);
   Readln;
End.

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Program NasobekSedmi;
{Rozhodne, zda je cislo nasobkem sedmi}
Var A : Integer;
Begin
 Writeln('Zadej cele cislo : ');
 Readln(A);
 if A mod 7 = 0 then Writeln('Toto cislo je nasobkem sedmi.')
  else Writeln('Sedmicka toto cislo nedeli.');
 Readln;
End.

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Program SeradTri;
{Seradi tri cisla podle velikosti}
Var A,B,C : Integer;

Procedure Prohod(var PrA,PrB:Integer);
{V programu je casto zapotrebi neco prohodit, tak si usetrime praci}
Var PomProm:Integer; {Pomocna promenna}
Begin
 PomProm:=PrB;
 PrB:=PrA;
 PrA:=PomProm; {Jelikoz jsme v hlavicce procedury napsali var, zmeny se projevi i "navenek"}
End;

Begin
 Write('Zadej tri cisla : ');
 Readln(A,B,C);
 {Nejprve vybereme nejmensi cislo a dame ho na zacatek}
 if (B<A) and (B<C) then Prohod(A,B) {B je nejmensi, tak ho dame na zacatek}
  else if (C<A) and (C<B) then Prohod(A,C); {C je nejmensi, tak ho dame na zacatek}
 {Neprobehlo-li ani jedno prohozeni, je nejmensi A, a to jiz na zacatku je}

 if (C<B) then Prohod(B,C); {Zbyva najit druhe nejmensi cislo a dat ho na misto B}

 Writeln(A,' < ',B,' < ',C); {Vypiseme vysledne serazeni}
 Readln;
End.

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Program NahodnyBrajgl;
{Udela svincik}
Uses Crt;
Begin
 Randomize; {Pokud chceme opravdu nahodne znaky, nesmime na Randomize zapomenout}
 ClrScr;
 Repeat
  GotoXY(Random(80),Random(50));
  TextColor(Random(32));
  TextBackground(Random(8));
  Write(Chr(Random(256)));
 until KeyPressed;
End.

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Program NahodnyVypis;
Uses Crt;
Var C : char;
Begin
Randomize; {Aby nahoda byla skutecne nahodna}
ClrScr;
 Repeat
  C:=ReadKey;
  GotoXY(Random(80),Random(50));
  Write(C);
 Until C = 'x';
End.

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx