Zistí či počet ľavých a pravých zátvoriek v súbore je rovnaký

Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Kategorija: Zadaňa zos Pascalu

Program: Zatvorky.pas
Subor exe: Zatvorky.exe

Zistí či počet ľavých a pravých zátvoriek v súbore je rovnaký. Rovnako zistí či je zhodný počet Begin-End.
{ ZATVORKY.PAS              Copyright (c) TrSek alias Zdeno Sekerak }
{ Je dany textovy subor f, ktory obsahuje program v jazyku pascal.  }
{ Vytvorte program, ktory preveri, ci pocty okruchlych zatvoriek    }
{ lavych a pravych su rovnake vytvorte program, ktory preveri, ci   }
{ pocty prikazov begin a end su rovnake                             }
{                                                                   }
{ Datum:23.05.2004                             http://www.trsek.com }
 
program zatvorky;
var f:file of char;
    ch:char;
    meno:string;
    slovo:string;
    zatv:integer;
    beg:integer;
 
begin
  WriteLn('Zistim ci pocet lavych a pravych zatvoriek je rovnaky.');
  Write('Zadaj meno suboru ktory mam preverit:');
  ReadLn(meno);
 
  Assign(f,meno);
  ReSet(f);
 
  while not(Eof(f)) do
  begin
    Read(f,ch);
 
    { nasiel zatvorky lavu, pravu }
    if( ch='(')then
     inc(zatv);
    if( ch=')')then
    dec(zatv);
 
    { pamata iba poslednych 5 znakov }
    slovo:=slovo+Upcase(ch);
    { iba 5 }
    if( length(slovo)>5)then
        delete(slovo,1,1);
 
    if( slovo='BEGIN')        then
     inc(beg);
    if( copy(slovo,3,3)='END')then
    dec(beg);
  end;
 
  Close(f);
 
  { aky je result }
  Write('Subor ',meno,' ');
  if(zatv=0)then WriteLn('ma spravny pocet zatvoriek')
            else WriteLn('nema spravny pocet zatvoriek');
 
  Write('Subor ',meno,' ');
  if(beg=0)then WriteLn('ma spravny pocet begin-end')
           else WriteLn('nema spravny pocet begin-end');
 
  ReadLn;
end.