{
ma to byt jako modul, ne jako program (otazka 3 radku na predelani)

ma to fungovat pro kruhove pole, coz moje reseni nema 
prechody, proto treba nefunguje zobrazeni, ze je pole plne

neni dodelane celkove, ale jaksi me tohle slozitejsi
uz nejka nebavi, takze se v tom ani nehodlam moc stourat :D

jinak myslim, ze docela cist kod :)
}

uses crt;

const maxFronta=11;
type Tfronta=record
       polozky:array[1..maxFronta] of integer;
       zacatek:integer;
       konec:integer;
     end;

procedure smazFrontu(var fronta:Tfronta);
var i:integer;
begin
     for i:=1 to maxFronta do
         fronta.polozky[i]:=0;
     fronta.zacatek:=1;
     fronta.konec:=1;
end;

function prazdnaFronta(fronta:Tfronta):boolean;
begin
     prazdnaFronta:=false;
     if fronta.zacatek=fronta.konec then
        prazdnaFronta:=true;
end;

function plnaFronta(fronta:Tfronta):boolean;
begin
     plnaFronta:=false;
     if fronta.zacatek=fronta.konec+1 then
        plnaFronta:=true;
end;

procedure vypisFrontu(var fronta:Tfronta);
var i:integer;
begin
     if prazdnaFronta(fronta)<>true then
        begin
             for i:=1 to maxFronta do
                 write(fronta.polozky[i]:3);
        end
     else write('Prazdna fronta!');
end;

procedure vlozPolozku(polozka:integer; var fronta:Tfronta; var vlozeno:boolean);
begin
     vlozeno:=false;
     if plnaFronta(fronta)<>true then
        begin
             fronta.polozky[fronta.konec]:=polozka;
             fronta.konec:=fronta.konec+1;
             vlozeno:=true;
        end
     else writeln('Fronta je plna!');
end;

procedure smazPolozku(var fronta:Tfronta);
begin
     if prazdnaFronta(fronta)<>true then
        begin
             fronta.polozky[fronta.konec-1]:=0;
             fronta.konec:=fronta.konec-1;
        end
     else write('Prazdna fronta!');
end;

var z: char;
    pole:Tfronta;
    vlozeno:boolean;
begin
repeat
clrscr;
writeln('Trtkal 2008 - http://fei.trtkal.net');
writeln('-----------------------------------');
begin
     smazFrontu(pole);
     vlozPolozku(2,pole, vlozeno);
     vlozPolozku(4,pole, vlozeno);
     vlozPolozku(3,pole, vlozeno);
     smazPolozku(pole);
     vypisFrontu(pole);
end;
writeln('-----------------------------------');
write('Opakovat a/n: ');readln(z);
until (z='n');
end.
