Evo nekoliko zadataka iz programiranja za Pascal koje sam ja radila, pripremajuci se za odgovaranje (imam samo neke prekucane u komp.)
Nadam se da ce ovo nekome da pomogne. Sto se tice tezine zadataka ima onih laksih i malo tezih tako da odgovara onima koji tek pocinju da upoznaju "tajne" programiranja

Pocecu sa zadacima iz Stringa, a inace bice i Nizovi, Matrice, Funkcije i procedure:
String
- Uneti stringove A,B,C (dužina stringova max. 15) a zatim prikazati recenicu koja se dobija spajanjem ova 3 stringa.program spajanjestr;
uses crt;
var
a,b,c:string;
begin
clrscr;
writeln('Unesite 3 stringa jedan ispod drugog');
readln(a);
readln(b);
readln(c);
write(a,' ',b,' ',c);
end.
- Napisati program koji ce izbrojati koliko ima blanko znakova u unetoj rečenici. program blanco;
var
b,c,i,j:integer;
recenica:string;
begin
repeat
writeln('Unesite recenicu');
read(recenica);
b:=0;
for i:=1 to length(recenica) do
if recenica[i]=' 'then b:=b+1;
writeln('Blanko karakter je koriscen ',b,' puta.');
end;
until keypressed;
end.
- Unijeti rečenicu, a zatim tu rečenicu prikazati u obrnutom redosledu.program obrnutistring;
var
a:string;
n,i:integer;
begin
repeat
writeln('Unesite recenicu');
read (a);
n:=length(a);
for i:=n downto 1 do
write (a[i]);
until keypressed;
end.
- Uneti rečenicu, a zatim odrediti da li je broj otvorenih zagrada jednak broju zatvorenih zagrada. Prikazati odgovarajuću poruku.program zagrade;
uses crt;
var
a:string;
i,n,otv,zatv:integer;
begin
clrscr;
writeln ('Unesite recenicu sa zagradama');
read (a);
otv:=0;
zatv:=0;
for i:=1 to length(a) do
case a[i] of
'(':otv:=otv+1;
')':zatv:=zatv+1;
end;
if otv=zatv then write('Jeste')
else write ('Nije');
end.
- Napisati program koji će izbrojati koliko ima znakova interpunkcije (.,?!:;), specijalnih znakova (/-&[]()_+-), a koliko slova/cifara u unetoj rečenici. program znakovi;
uses crt;
var
a,b,c,i,j:integer;
recenica:string;
begin
clrscr;
writeln('Unesite recenicu');
read(recenica);
a:=0;
b:=0;
c:=0;
for i:=1 to length(recenica) do
case recenica[i] of
'a','b','c','q','z','s','w','x','e','d','v','f','r','t','g','n','h','y','u','j','m','i','k','o','l','p': a:=a+1;
'.',',',':',';','!','?','"': b:=b+1;
'0','1','2','3','4','5','6','7','8','9': a:=a+1;
'(',')','[',']','\','/','+','-','*','<','>': c:=c+1;
end;
writeln('Broj slova i cifara u recenici je: ',a);
writeln('Broj znakova interpunkcije u recenici je: ',b);
writeln('Broj specijalnih znakova u recenici je: ',c);
end.
- Napisati program koji određuje nejkraću riječ u rečenici, ispisuje tu riječ i ispisuje koliko slova ima ta riječ. program zacetiri;
uses crt;
var
a,b,c,minp,maxp,poc,kraj,pocduzina,duzina,n,i,j:integer;
minrec,recenica:string;
begin
clrscr;
read(recenica);
minp:=0;
pocduzina:=length(recenica);
maxp:=0;
i:=1;
while i<= length(recenica) do begin
if recenica[i]=' ' then i:=i+1
else begin
duzina:=0;
minp:=i;
repeat i:=i+1;duzina:=duzina+1; until recenica[i]=' ';
maxp:=i-1;
if pocduzina>duzina then begin poc:=minp; kraj:=maxp; pocduzina:=duzina;
i:=maxp+1;
end;
end;
end;
write ('najkraca rijec je: ');
for i:=poc to kraj do write (recenica[i]);
writeln;
writeln ('Ova rijec ima ',pocduzina,' slova');
end.
- Napisati program kojim se unose podaci za n takmičara (ime i prezime, bodovi), a zatim se vrši rangiranje prema osvojenim bodovima. Prikazati rang listu. program zapet;
type maxstring=string[100];
nizstring=array[1..100] of maxstring;
var imeprezime,ipb:nizstring;
i,n,bodovi,rez,ef,s,j:integer;
poeni,rb:maxstring;
procedure razmeni(var x,y:maxstring);
var
p:maxstring;
begin
p:=x;
x:=y;
y:=p;
end;
procedure sort(n:integer;var a:nizstring);
var i,j,br1,br2,ef:integer;
begin
for i:=1 to n-1 do
for j:=i+1 to n do begin
val(copy(a[i],1,3),br1,ef);
val(copy(a[j],1,3),br2,ef);
if br1<br2 then razmeni(a[i],a[j]);
end;
end;
begin
writeln('Unesite broj ucenika ');
readln(n);
writeln('Unesite Ime i Prezime [Enter], zatim broj bodova [Enter] ');
for i:=1 to n do begin
readln(imeprezime[i]);
readln(bodovi);
str(bodovi+100,poeni);
ipb[i]:=concat(poeni,' ',imeprezime[i]);
end;
sort(n,ipb);
writeln('Br. Ime i Prezime Bodovi');
Writeln('_________________________________');
for i:=1 to n do begin
val(copy(ipb[i],1,3),rez,ef);
delete(ipb[i],1,3);
s:=0;
for j:=1 to length(ipb[i]) do
s:=s+1;
str(i,rb);
if i<10 then rb:=concat(rb,'. ')
else rb:=concat(rb,'.');
writeln(rb,ipb[i],rez-100:30-s);
end;
end.
- Napisati program koji ce sva mala slova u stringu x zamijeniti velikim i obrnuto. Prikazati izmjenjeni string. program velmal;
uses crt;
var
x:string;
i:integer;
ch:char;
begin
clrscr;
readln(x);
for i:=1 to length (x) do
begin
ch:=x[i];
if (ord (ch)>=97)and(ord(ch)<=122) then
x[i]:=chr(ord(ch)-32);
if (ord(ch)>=65)and (ord(ch)<=90)then
x[i]:=char(ord(ch)+32);
end;
writeln(x);
repeat until keypressed;
end.
- Napisati program kojim se unose dva stringa x i y a zatim se utvrdjuje da li string x sadrzi string y kao podskup. Odrediti od koje pozicije u stringu x pocinje string y. Ne koristiti ugradjenu funkciju. program podstring;
uses crt;
var x,y:string;
nx,ny,poz,i,j:integer;
begin
clrscr;
write('string x:');
readln(x);
write('string y:');
readln(y);
writeln('------------------------');
nx:=length(x);
ny:=length(y);
i:=1;
poz:=0;
while i <= nx-ny+1 do begin do
begin
j:=1;
poz:=i;
while j <= ny do
if x[i]=y[j] then begin
j:=j+1;
i:=i+1;
end
else begin
j:=ny+1;
poz:=0;
end;
if poz>0 then begin
i:=nx;
writeln('nadjen je podstring na poziciji',' 'poz);
end
else
i:=i+1;
end;
if poz=0 then writeln('nije nadjeno poklapanje');
repeat until keypressed
end.
- Napisati program kojim se određuje da li u unetoj rečenici ima više samoglasnika ili suglasnika. Napisati odgovarajuću poruku uz prikazivanje broja samoglasnika i broja suglasnika. program samsug;
uses crt;
var
n,i,s,sam,sug:integer;
r:string;
begin
clrscr;
read (r);
n:=length(r);
sam:=0;
sug:=0;
for i:=1 to n do
case r[i] of
'a','e','i','o','u':sam:=sam+1;
'q','w','r','t','y','p','s','d','f','g','h','j',
'k','l','z','x','c','v','b','n','m':sug:=sug+1;
end;
if sam>sug then writeln ('Ima vise samoglasnika')
else writeln ('Ima vise suglasnika');
writeln('Broj samoglasnika je ',sam);
writeln('Broj suglasnika je ',sug);
end.
- Napisati program koji iz unete rečenice redom vadi riječi i popunjava niz X definisan kao niz stringova. Nakon tog aprikazati ve izvađene riječi jednu ispod druge. program rastavljanje;
uses crt;
var
i,a,p,k:integer;
r:string;
begin
clrscr;
writeln ('..:: Unesite recenicu::.. ');
readln (r);
a:=length(r);
i:=1;
while i<=a do
case r[i] of
' ',',','.','!','?':i:=i+1;
else begin
writeln;
p:=i;
repeat if i<=a then i:=i+1
else r[i]:='.';
until r[i] in [' ',',','.','!','?'];
k:=(i-1);
for i:=p to k do write (r[i]);
writeln;
i:=(k+1);
end
end;
readln;
end.
- Napisati program kojim se učitava rečenica i određuje:
a) Koliko ima riječi u rečenici
b) Koliko puta se pojavljuje koji samoglasnik
c) Koliko ima suglasnika
d) Koliko je specijalnih znakova program brojacznakova;
uses crt;
var
simb:char;
bra,bre,bri,bro,bru,rijec,sugl,spznak,brsug,brspeczn,brrec,brrec2,s:integer;
begin
clrscr;
bra:=0;bre:=0;bri:=0;bro:=0;bru:=0;brsug:=0;brspeczn:=0;brrec:=0;
read (simb);
while simb<>'.' do
begin
case simb of
'a':bra:=bra+1;
'e':bre:=bre+1;
'i':bri:=bri+1;
'o':bro:=bro+1;
'u':bru:=bru+1;
':','!','?',',',';','_','&','%','"':brspeczn:=brspeczn+1;
'b','c','d','f','g','h','j','l','k','m','n','p','q','r','s','t','v','w','x','y','z':brsug:=brsug+1;
' ':begin repeat read (simb) until simb <> ' ';
brrec:=brrec+1;
case simb of
'a':bra:=bra+1;
'e':bre:=bre+1;
'i':bri:=bri+1;
'o':bro:=bro+1;
'u':bru:=bru+1;
':','!','?',',',';','_','&','%','"':brspeczn:=brspeczn+1;
'b','c','d','f','g','h','j','l','k','m','n','p','q','r','s','t','v','w','x','y','z':brsug:=brsug+1;
end;
end
end;
read (simb);
end;
writeln (' ');
writeln ('a=',bra, ' e=',bre, ' i=',bri, ' o=',bro,' u=',bru);
writeln ('Broj suglasnika je ',brsug);
writeln ('Broj specijalnih znakova je ',brspeczn+1);
writeln ('Broj rijeci je ',brrec+1);
end.
- Napisati program kojim se pronalazi i stampa najduža riječ u rečenici. Rečenicu unijeti kao string. program najduzarec ;
var p,k,i,d,max,n:integer; r:string;
begin
writeln(’Unesite recenicu’);
readln (r);
n:=length(r);
max:=0;
d:=0;
for i:=1 to n do
if r[i]in [’ ’,’.’,’,’] then begin
if d>max then begin
p:=i-d; k:=i-1; max:=d;
end
else g:=d+1;
if d=max then begin
p:=i-d;
k:=i-1;
end
else d:=d+1;
for i:=p to k do write (r[i]);
repeat until keypressed;
end.