// 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.