// DCV na PGM
// Jan Pacner
// zadani:
   {
   kolikrat se ve vstupnim textu (je zadavan po znacich)
   zmeni mala na velka, vsechno ostatni se ignoruje
   konec zadavani je urcen konstantou, znakem,
   kterou si uzivatel zada na zacatku
   }
// made 31.12.2007 and modified 7.1.2008

program kolik_zmen_velkych_na_mala;
{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes
  { you can add units after this };

var
//char,string,real,boolean,integer,byte
   zakonceni:char;
   znak1:char;
   znak2:char;
   ukoncit:boolean;
   zmen:integer;
   bigmin,bigmax,smallmin,smallmax:byte;

begin
bigmin:=65;
bigmax:=90;
smallmin:=97;
smallmax:=122;
ukoncit:=false;
zmen:=0;

writeln ('spocita kolikrat se zmenila velka pismena na mala a naopak');
writeln;
writeln ('zadejte prosim ukoncovaci ASCII znak');
readln (zakonceni);
writeln ('zadavejte ASCII znaky (po jednom) a oddelujte enterem');

repeat
   readln (znak1);
   if ord(znak1)=ord(zakonceni) then ukoncit:=true
   else
      begin
//interval velka: <65,90>
//interval mala: <97,122>
         if ((((bigmin<=ord(znak1)) and (ord(znak1)<=bigmax))=((smallmin<=ord(znak2)) and (ord(znak2)<=smallmax))) or (((bigmin<=ord(znak2)) and (ord(znak2)<=bigmax))=((smallmin<=ord(znak1)) and (ord(znak1)<=smallmax)))) then zmen:=zmen+1;

         readln (znak2);
         if ord (znak2) = ord (zakonceni) then ukoncit:=true
            else
            begin
					if ((((bigmin<=ord(znak1)) and (ord(znak1)<=bigmax))=((smallmin<=ord(znak2)) and (ord(znak2)<=smallmax))) or (((bigmin<=ord(znak2)) and (ord(znak2)<=bigmax))=((smallmin<=ord(znak1)) and (ord(znak1)<=smallmax)))) then zmen:=zmen+1;
            end;
      end;
until ukoncit=true;

if zmen>0 then zmen:=zmen-1;

writeln (' -> ',zmen,'krat jste zmenil(a) velky znak za maly nebo naopak');
readln;
end.