You are on page 1of 75

METODIKA ZBIRKA REENIH ZADATAKA I

KRATKE TEORIJE IZ PROGRAMSKOG JEZIKA

PASCAL

Autor
Radoica Nikoli
Leskovac 2015.

PASCAL

Zbirka je namenjena:
Za srednje kole i gimnazije
Za pripremu prijemnog ispita iz informatike
Za uenje osnova iz programskog jezika PASCAL

PASCAL

Predgovor
Paskal (Pascal) je imperativni programski jezik, koji je 1974. godine razvio Niklaus Virt, kao jezik
pogodan za uenje strukturnog programiranja. Imenovan je po uvenom francuskom matematiaru i
filozofu Blezu Paskalu, tvorcu prve raunske maine koja je imala mogudnost izvoenja operacije
sabiranja. Standardizovan je 1983. godine od strane Meunarodnog komiteta za standardizaciju. Paskal
se danas koristi kao poetni program za obuku bududih programera, naruito onih koji nameravaju da
rade na programskom jeziku C.
Osnovni znakovi jezika:
U paskalu se koriste ASCII slova
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
brojevi: 0 1 2 3 4 5 6 7 8 9
i specijalni znakovi: + - * / = < > *+ . , ; : ^ () , Meu specijalne znakove se ubraja i razmak (spejs).
Rezervisane rei u paskalu:
Begin - se koristi za poetak bloka.
End - se koristi za kraj bloka.
Var - se koristi za poetak definisanja promenljivih.
Type - se koristi za definisanje tipova promenljivih.
Const - se koristi za definisanje konstanti.
Procedure - se koristi za definisanje procedure.
Function - se koristi za definisanje funkcije.
Standardne funkcije jezika paskal
Read(a), Readln(a) - je funkcija koja uitava vrednost za promenljivu a.
Write(a), Writeln(a) - je funkcija koja ispisuje vrednost promenljive a.
Paskal ne razlikuje velika i mala slova (tj. nije case sensitive).
U programskom jeziku paskalu svaka promenjiva se karakterie tipom. Za svaki tip postoji razliiti skup
operacija i vrednosti. Tipovi podataka u paskalu mogu biti prosti i sloeni. Standardni tipovi podataka:
Celobrojni (integer), realni (real), logiki (boolean) i znakovni (char).
Neke od najkorienijih operacija u pascal-u su
+ : sabiranje;
sin :sinus;
- : oduzimanje;
cos : kosinus;
* : mnoenje;
tan : tangens;
/ : deljenje;
pred : prethodnik integera;
abs : absolutna vrednost broja (bez
succ : sledbenik integera;
predznaka);
trunc: celi deo razlomka (integer);
div : celobrojno deljenje;
int : celi deo razlomka (real);
mod : deljenje s ostatkom;
frac : decimalni deo razlomka (real);
sqr : kvadrat;
sqrt : kvadratni koren;
ln : prirodni logaritam;
3

PASCAL

Sadraj:
Linijska struktura

5.

Razgranata struktura

10.

Case naredba

21.

Naredbe petlje

25.

While ciklus

39.

Repeat ciklus

46.

Nizovi

48.

Matrice

62.

Stringovi

72.

PASCAL

UVOD
Linijska struktura
Naredbe za unos su read i readln; read se koristi s navodjenjem varijable u zagradi, i uvek se
upotrebljava za oitavanje unosa, dok se readln moe koristiti i samostalno, jer ona prenosi kursor u novi
red te eka bilo kakav odgovor za nastavak ili prekid izvrenja programa. Za izpis koriste se
naredbe write i writeln. Razlika izmedju njih je u tome to ova druga izpisuje tekst u novi red (liniju), te
se moe koristiti samostalno, bez sadraja izpisa, za sam prelazak u novi red, za razliku od prve koja
zahteva dodatni parametar.

begin
writeln ('Zdravo ');
readln
end.

Primer:
Napisati program koji ispisuje poruku Zdravo.
Begin {Begin oznaava poetak programa}
writeln(Zdravo); {writeln komanda ispisuje tekst izmedju zagrada}
readln ,readln koji bez zagrada stoji ispred poslednje end. komande slui kako bi videli rezultat
programa prilikom njegovog izvravanja,ukoliko ne stoji opcija readln program se automatski gasi , i
nedemo biti u mogudnosti da vidimo rezultat.}
end. ,naredba end. je naredba koja nam pokazuje da je kraj programa.Primer zadataka koji sadri aritmetike operacije u njemu:
Napisati program koji izraunava zbir dva uneta broja.
var {var oznaava varijablu odnosno promenljive}
broj1,broj2,rez:integer; {u ovom bloku se unose promenljive i definie im se tip , ukoliko koristimo
operacije +,-,*,div,mod mozemo koristiti integer, u suprotnom koristimo real}
begin
writeln('Unesite broj1:');
readln(broj1); {Uitavamo vrednost prvog broja}
writeln('Unesite broj2:');
readln(broj2); {Uitavamo vrednost drugog broja}
rez:=broj1+broj2; {Pridruivanje vrednosti se vri komandom := }
writeln('Broj1+Broj2=',rez);
readln
end.

PASCAL

Primeri zadataka sa linijskom strukturom


1. Napisati program koji izraunava
zapreminu na osnovu unete duine,irine i visine.
var
duzina,sirina,visina,zapremina:integer;
begin
writeln ('Unesite duzinu:');
readln(Duzina);
writeln ('Unesite sirinu:');
readln(Sirina);
writeln ('Unesite visinu:');
readln(Visina);
Zapremina:=Duzina*Sirina*Visina;
writeln('Zapremina bazena iznosi:',zapremina,'m^2');
readln
end.

3. Napisati program koji unetu veliinu u galonima


pretvara u litre. 1 galon = 4.54 l
var
galon,litri:real;
begin
writeln ('Unesite kolicinu tecnosti u galonima:');
readln(galon);
litri:=galon*4.54;
writeln(litri:5:2);
readln
end.

2. Napisati program koji odredjuje koliko se puta prvi uneti


broj sadri u drugom unetom broju kao i njihov ostatak
deljenja.
var
broj1,broj2,brojDiv,BrojMod:integer;
begin
writeln ('Unesite broj1:');
readln(broj1);
writeln ('Unesite broj2:');
readln(broj2);
BrojDiv:=Broj1 div Broj2; {koliko se broj 2 puta sadri u
broju 1}
brojMod:=Broj1 mod Broj2; {ostatak pri deljenju broja 1
brojem 2}
writeln('Broj1 sadrzi broj2:',BrojDiv,'puta');
writeln('Ostatak deljenja je:',BrojMod);
readln
end.
4. Automobil sa punim rezervoarom kapaciteta V litara
predje put od S kilometara.Napisati program kojim se
rauna potronja u litrima na 100 km.
var
v,s:real;
begin
writeln ('Unesite kapacitet rezervoara:');
readln(v);
writeln('Unesite predjeni put:');
readln(s);
writeln('Potrosnja na 10 km je:',V*100/s:6:2,' l');
readln
end.

PASCAL

5. Napisati program kojim se rauna hipotenuza i


povrina pravouglog trougla na osnovu zadatih
kateta.
var
a,b,c,P:real;
begin
writeln ('Unesite a katetu:');
readln(a);
writeln ('Unesite b katetu:');
readln(b);
c:=sqrt(sqr(a)+sqr(b));
p:=(a*b)/2;
writeln('Hipotenuza je:',c:6:2,'Povrsina
je:',P:5:2);
readln
end.

6. Napisati program koji prevodi teinu iz funti u kg

7. Napisati program koji izraunava cenu porcije

8. Napisati program koji pomae kasirki da obrauna

sira x grama,ako je 1kg sira 165 dinara.


var
x:real;
begin
writeln ('Unesite tezinu porcije:');
readln(x);
writeln('Cena porcije je:',0.165*x:10:2,'din');
readln
end.

kusur,tako to od nje trai da unese jedininu cenu


artikla i koliko novca dobije od kupca.
var
cena,kolicina,iznos:real;
begin
writeln ('Unesite cenu aritkla:');
readln(cena);
writeln ('Unesite kolicinu artikla:');
readln(kolicina);
writeln ('Unesite iznos koji daje kupac:');
readln(iznos);
writeln('Kusur je:',iznos-cena*kolicina:10:2);
readln
end.

(1 funta = 400g)
var
kg,funta:real;
begin
writeln('Unesite tezinu u funtama:');
readln(funta);
kg:=funta*0.4;
writeln('Tezina je:',kg:10:2);
readln
end.

PASCAL

9. Napisati program kojim se rauna potrebno

10. Napisati program koji izraunava obim i povrinu

vreme za download unete veliine fajla,pri unetoj


brzini. Program treba da ispie za koliko de se sati,
minuta i sekundi skinuti fajl.
var
kolicina,brzina:real;
sat,sek,min,rez:integer;
begin
writeln ('Unesite kolicinu mb za download:');
readln(kolicina);
writeln ('Unesite brzinu downloada u KB/s:');
readln(brzina);
rez:=Trunc(((Kolicina*1024)/brzina));
writeln(rez);
sat:=rez div 3600;
sek:=rez mod 3600;
min:=sek div 60;
sek:=sek mod 60;
writeln('Potrebno je vreme:',sat:5,' h',min:5,'
min',sek:5,' sek');
readln
end.

kvadrata i program koji izraunava povrinu i obim


pravougaonika.
a)Povrina i obim kvadrata
var
a,p,o:real;
begin
writeln ('Unesite duzinu stranice:');
readln(a);
p:=sqr(a);
o:=4*a;
writeln('Povrsina kvadrata je:',p:6:2,' Obim
je:',o:6:2);
readln
end.
b) Povrina i obim pravougaonika
var
a,b,p,o:real;
begin
writeln ('Unesite a:');
readln(a);
writeln ('Unesite b:');
readln(b);
p:=a*b;
o:=2*(a+b);
writeln('Povrsina je:',p:6:2,' Obim je:',o:6:2);
readln
end.

11. Dat je ugao u stepenima na dve decimale.


Napisati program koji za date vrednosti ugla
izraunava ugao u stepenima i minutama.
var
s:real;
step,min:integer;
begin
writeln ('Unesite ugao u stepenima:');
readln(s);
step:=trunc(s); {trunc se koristi za zaokruivanje
brojeva , jer integer razume samo cele brojeve}
min:=trunc(s-step*60);
writeln(s:10:2,' stepeni je:',step,' stepeni ',Min,'
minuta');
readln
end.

12. Napisati program kojim se vri preraunavanje


amerikih dolara u Euro, ako su poznate dinarske
vrednosti ovih valuta.
var
D, KursDolara, KursEura : real;
begin
writeln ('Koliko dolara treba konvertovati u Eure: ');
readln(D);
writeln ('Uneti kurs dolara izrazen u dinarima: ');
readln(KursDolara);
writeln ('Uneti kurs Eura izrazen u dinarima: ');
readln(KursEura);
writeln(D:10:2, ' $ =', D*KursDolara/KursEura:8:2, '
Eura');
readln
end.

PASCAL

13. Napisati program koji reava slededi matematiki


izraz: (x2+y2)2

14. Uitanom trocifrenom broju razdvojiti sve cifre.


var
a,b,c,m:integer;
begin
writeln('Unesite m:');
readln(m);
begin
a:=m div 100;
b:=m mod 100 div 10;
c:=m mod 10;
end;
writeln(a,' ',b,' ',c);
readln
end.

var
x, y, resenje : real;
begin
writeln ('Unesite vrednosti promenljivih x i y: ');
readln(x, y);
resenje := sqr((sqr(x)+sqr(y)));
writeln('Resenje izraza je: ', resenje:6:2);
readln
end.

15. Napisati program koji datom cetvorocifrenom


celom broju izracunava zbir kvadrata cifara.

16. Izraunati dijagonale d i D kocke (za poznatu


stranicu a)

var
broj: integer;
j, d, s, h, zbir: real;
begin
writeln('Unesite cetvorocifren broj: ');
readln(broj);
h:=broj div 1000;
s:=broj div 100 mod 10;
d:=broj div 10 mod 10;
j:=broj mod 10;
j:=j*j;
d:=d*d;
s:=s*s;
h:=h*h;
zbir:=s+d+j+h;
writeln('Zbir cifara je ', zbir:0:0);
readln
end.

var
a, d, D: real;
begin
writeln('Unesite stranicu kocke');
readln(a);
d:= a * sqrt(2);
D:= a * sqrt(3);
writeln('a=', a, ' d=', d, ' D=',D);
readln
end.

PASCAL

Razgranata struktura
If,else if,else,then,case
If-Then
If-Then se koristi kad se eli odluiti o jednome mogudem ishodu toka programa u sluaju ako je ispunjen
odredjeni uslov naveden nakon kljune rei "if". Ako je uslov ispunjen, izvrava se slededa naredba
nakon kljune rei "then", a ako nije, programski tok ne ini nita, to jest prelazi na izvravanje sledede
naredbe koja nije u sklopu If-Then izraza, ili se zavrava ukoliko nema nikakvih naredbi koje se mogu
izvriti nakon izraza.

IF {logiki izraz} THEN {naredba};

Ako se eli uslovljeno pokrenuti vie naredbi u sluaju izvrenja zadanih uslova, sve se navode u "begin
,...- end" bloku, inae de program izvriti sve to dolazi nakon prve take-zareza (prve naredbe), bez
obzira jesu li uslovi ispunjeni ili nisu:

IF {logiki izraz} THEN


begin
{naredba 1};
{naredba 2};
{naredba 3};
{...}
end;

IF then else
Ako se eli odluiti izmedju nekoliko moguih tokova programa ili procedure, koristi se If-Then-Else
izraz grananje; prvi tok izvrava se u sluaju da je izpunjen uslov napisan izmedju "if" (ako) i "then"
(onda), drugi u sluaju da nije, a dolazi nakon kljune rei "else" (inae):

IF {logiki izraz} THEN {naredba 1} ELSE {naredba 2};

10

PASCAL
Ovde vredi isto pravilo o zatvaranju blokova viestrukih naredbi izmedju "begin {...} end;" izraza:
IF {logiki izraz} THEN
begin
{naredba 1};
{naredba 2};
{naredba 3};
{...}
end {ovde ne ide
";"}
ELSE
begin
{naredba 4};
{naredba 5};
{naredba 6};
{...}
end;

IF {logiki izraz} THEN


begin
{naredba 1};
{naredba 2};
{naredba 3};
{...}
end {ovde ne ide ";"}
ELSE IF {logiki izraz} THEN
begin
{naredba 4};
{naredba 5};
end {ovde ne ide ";"}
ELSE
begin
{naredba 6};
{naredba 7};
{naredba 8};
{...}
end;

11

PASCAL

Primeri zadataka sa razgranatom strukturom


17. Napisati program kojim se odredjuje koji je od

18. Imamo da je C = 5. Korisnik unosi vrednost A i B.

dva uneta broja vedi i ispisuje poruku o tome. Ako su


brojevi jednaki , ispii poruku o tome.
var
broj1,broj2:integer;
begin
writeln ('Unesite broj1:');
readln(broj1);
writeln ('Unesite broj2:');
readln(broj2);
if broj1>broj2 then
writeln('Broj1 je veci od broja2')
else if broj1=broj2 then
writeln('Brojevi su jednaki')
else
writeln('Broj2 je veci od broja1');
readln
end.

Ako je A vede od B vrednost C de se uvedati za 12. U


suprotnom C de ostati 5.
var
a,b,c:integer;
begin
c:=5;
writeln('Unesite a:');
readln(a);
writeln('Unesite b:');
readln(b);
if a>b then
c:=c+12;
writeln('C=',C:2);
readln
end.

19. Napisati program kojim se promenljivoj max

20. Napisati program kojim se proverava da li je

dodeljuje vrednost vedeg od dva uneta broja.


var
a,b,max:integer;
begin
writeln ('Unesite a i b:');
readln(a,b);
if a>b
then max:=a
else max:=b;
writeln('Max=',max);
readln
end.

uneti broj paran ili nije.


var
broj:integer;
begin
writeln ('Unesite broj:');
readln(broj);
if broj mod 2=0 then
writeln('Broj je paran')
else
writeln('Broj je neparan');
readln
end.

12

PASCAL

21. Napisati program kojim se unose dve


promenljive sa tastature , promenljivoj max dodaje
vrednost vedeg od ta dva broja , a promenljivoj min
,vrednost manjeg od ta dva broja.
var
a,b,max,min:integer;
begin
writeln ('Unesite a i b:');
readln(a,b);
if a>b
then
begin
max:=a;
min:=b;
end
else
begin
max:=b;
min:=a;
end;
writeln('Max=',max, 'min=',min);
readln
end.

22. Napisati program koji izraunava kv.koren


unetog broja.Ako je ulazni podatak nekorektan (x<0)
ispisuje se odgovarajuda poruka.
var
x:real;
begin
writeln ('Unesite broj:');
readln(x);
if x>=0 then
writeln('Kvadratni koren iz x= ',x:0:2,' je ',sqrt(x):0:2)
else writeln('Ne postoji kvadratni koren negativnog
broja');
readln
end.

23. Napisati program koji zavisno od uitane


vrednosti,izraunava vrednost funkcije ili daje
poruku da je funkcija nedefinisana y =

24. Napisati program koji uitava dva broja I


proverava da li su istog znaka.
var
a,b:integer;
begin
writeln ('Unesite A:');
readln(a);
writeln ('Unesite B:');
readln(b);
if A*B>0 then
writeln('DA')
else
writeln('NE');
readln
end.

var
x:real;
begin
writeln ('Unesite broj:');
readln(x);
if sqr(x)>=1
then writeln('y=',sqrt(sqr(x)-1):0:2)
else writeln('Nekonkretan ulazni podatak');
readln
end.

13

PASCAL

25. Za tri uitana broja ispitati da li je jedan do njih

26. Napisti niz naredbi kojim se sumiraju samo

jednak sumi druga dva broja.


var
a,b,c:integer;
begin
writeln('Unesite A:');
readln(A);
writeln('Unesite B:');
readln(B);
writeln('Unesite C:');
readln(C);
if (A=B+C) or (B=A+C) or (C=A+B)
then writeln('DA')
else writeln('NE');
readln
end.

pozitivne vrednosti promenljivih a,b,c.


var
a,b,c,suma:integer;
begin
suma:=0;
writeln('Unesite a:');
readln(a);
writeln('Unesite b:');
readln(b);
writeln('Unesite c:');
readln(c);
if a>0 then
suma:=suma+a;
if b>0 then
suma:=suma+b;
if c>0 then
suma:=suma+c;
writeln('Suma je:',suma);
readln
end.

27. Napisati program koji izraunava povrinu

28. Napisati program koji na osnovu trajanja


telefonskog razgovora i cene u minutama izraunava
cenu telefonskog razgovora,ako je vikendom popust
od 10%.U programu treba predvideti unos
indikatora za dan razgovora 1-radni dan,2-vikend.
var
trajanje,cenaPoMin,Cena:real;
Dan:integer;
begin
writeln ('Unesite vreme trajanja razgovora:');
readln(trajanje);
writeln ('Unesite cenu po minutama:');
readln(CenaPoMin);
writeln ('Unesi:1-Radni dan,2-Vikend:');
readln(dan);
cena:=Trajanje*CenaPoMin;
if dan=2 then cena:=cena*0.90;
writeln('Cena razgovora je:',Cena:0:2,'din');
readln
end.

krunog poprenog preseka na osnovu spoljanjeg i


unutranjeg poluprenika (kontroliudi tanost
unetih podataka).
var
r1,r2,p:real;
begin
writeln ('Unesite spoljasnji poluprecnik:');
readln(r1);
writeln ('Unesite unutrasnji poluprecnik:');
readln(r2);
if r1>r2 then
begin
p:=2*pi* (sqr (r1)-sqr(r2));
writeln('Povrsina kruznog prstena je:',P:0:2);
end
else
writeln('Greska! Spoljasnji poluprecnik mora biti veci
od unutrasnjeg!');
readln
end.

14

PASCAL

29. Napisati program koji izraunava iznos poreza za

30. Napisati program koji na osnovu visine osobe

unetu platu. Ako je bruto plata veda od iznosa 1000e


porez je 20%,inae je porez 15%.
var
plata,porez:real;
begin
writeln ('Unesite platu:');
readln(Plata);
if plata > 1000
then porez:=plata*0.2
else porez:=plata*0.15;
writeln('Porez je:',porez:0:2);
readln
end.

odredjuje teinu.Idealna teina osobe mukog pola


je manja od visine za 100,a enskog pola za
110.Predvideti unos identifikatora pola 1-muski,2enski pol.
var
visina,idealnatezina:real;
pol:integer;
begin
writeln('Unesi visinu:');
readln(visina);
writeln ('Pol(1-Muski,2-Zenski)->');
readln(pol);
if pol=1
then idealnatezina:=visina-100
else idealnatezina:=visina-110;
writeln('Idealna tezina je:',idealnatezina:0:2);
readln
end.
32. Napisati program kojim se izraunava ukupan
otpor R koji daju otpornici R1 i R2 zavisno od tipa
veze i to: 1-redno,2-paralelno
var
r1,r2,r:real;
v:integer;
begin
writeln ('Unesite R1:');
readln(r1);
writeln ('Unesite R2:');
readln(r2);
writeln('Tip veze (1-redno,2-paralelno)->');
readln(v);
if v=1
then r:=r1+r2
else r:=r1*r2/(r1+r2);
writeln('Ukupni otpor je:',r:0:2);
readln
end.

31. Napisati program koji na osnovu unete


visine,teine i indikatora pola osobe ispisuje
odgovarajudu poruku: Vi imate idealnu teinu,treba
da se popravite,treba da smrate ...
var
v,t,it:real;
p:integer;
begin
writeln ('Unesite visinu:');
readln(v);
writeln ('Unesite tezinu:');
readln(t);
writeln ('Pol(1-muski,2-zenski)->');
readln(p);
if p=1
then it:=v-100
else it:=v-110;
if it=t
then writeln('Imate idealnu tezinu:')
else
if it>t
then writeln('Treba da se popravite:',it-t:0:2,'kg')
else writeln('Treba da smrsate:',t-it:0:2,'kg');
readln
end.

15

PASCAL

34. Napisati program koji od korisnika uitava


godinu (broj izmedju 1538 i 10000) i utvrdjuje da li je
ona prestupna. Po gregorijanskom kalendaru
prestupne godine odredjuju se na slededi nain:
-ako je godina deljiva sa 400,prestupna je (npr.2000
godina je prestupna)
-ako godina nije deljiva sa 400,ali je deljiva sa
100,nije prestupna (npr.1900. godina nije prestupna)
-ako godina nije deljiva sa 100,ali je deljiva sa
4,prestupna je (npr.2004 godina je prestupna)
-ako godina nije deljiva nije 100 deljiva sa 4,nije
prestupna (npr.2001. nije prestupna)

33. Napisati niz naredbi kojima se odredjuje koliko


je vrednosti unetih promenljivih a,b,c jednako nuli.
var
a,b,c,br:integer;
begin
writeln ('Unesite a:');
readln(a);
writeln ('Unesite b:');
readln(b);
writeln ('Unesite c:');
readln(c);
br:=0;
if a=0 then br:=br+1;
if b=0 then br:=br+1;
if c=0 then br:=br+1;
writeln('Zbir promenljivih jednakih nuli:',br);
readln
end.

var
g:integer;
begin
readln(g);
if (g<1538) or (g>10000) then
writeln('Unesite broj izmedju 1538 i 10000')
else if g mod 400=0 then
writeln('Prestupna je')
else if g mod 100 = 0 then
writeln('Nije prestupna')
else if g mod 4 = 0 then
writeln('Prestupna je')
else
writeln('Nije prestupna');
readln
end.
36. Napisati program kojim se dati brojevi a,b i c
udvostruuju,ako je abc ,a u protivnom se
zamenjuju njihovim apsolutnim vrednostima.
var
a,b,c:integer;
begin
writeln ('Unesite a,b,c:');
readln(a,b,c);
if (a>=b) and (b>=c)
then
begin
a:=2*a;b:=2*b;c:=2*c;
end
else
a:=abs(a);b:=abs(b);c:=abs(c);
writeln('a=',a,' b=',b,' c=',c);
readln
end.

35. Napisati program kojim se reava jednaina


ax+b=0
var
a,b,x:real;
begin
writeln ('Unesite a:');
readln(a);
writeln ('Unesite b:');
readln(b);
x:=-b/a;
writeln('Resenje jednacine je x=',x:8:2);
readln
end.

16

PASCAL

37. Ako se molekul sumporne kiseline H2SO4 sastoji


od dva atoma vodonika,jednog atoma atoma
sumpora I etiri atoma kiseonika, napisati program
koji odredjuje maksimalan broj molekula sumporne
kiseline koji se moe formirati od datih A atoma
vodonika,B atoma sumpora i C atoma kiseonika.
Traeni broj molekula je min (A div 2,B,C div 4) na
emu se bazira reenje .
var
min,A,B,C:integer;
begin
writeln ('Unesite broj molekula vodonika,sumpora i
kiseonika:');
readln(a,b,c);
min:=A div 2;
if B<min then min:=B;
if C div 4<min then min:=C div 4;
writeln('Moze se napraviti', min,' molekula
sumporne kiseline');
readln
end.
39. Napisati program kojim se y izraunava u
zavisnosti od uslova koje ispunjava promenljiva x.
{

38. Ako se od odseaka sa duinama x,y,z moe


konstruisati trougao,izraunati njegovu povrinu po
formuli:
(
) (
) (
S=
)
gde je
var
x,y,z,p,s:real;
R:boolean;
begin
writeln ('Unesite x,y,z:');
readln(x,y,z);
writeln(' x=',x,' y=',y,' z=',z);
if (x+y>z) and (x+z>y) and (y+z>x)
then
begin
p:=(x+y+z)/2;
s:=sqrt(p*(p-x)*(p-y)*(p-z));
writeln('Povrsina trougla je:',s:6:2);
readln
end
else writeln('Ne moze se konsturisati trougao');
readln
end.
40. Napisati program kojim se ispisuje da li su dati
celi brojevi A,B,C uredjeni u neopadajudem poretku
(ABC).Ispisati odgovarajudu poruku.
var
a,b,c:real;
begin
writeln ('Unesite a,b,c:');
readln(a,b,c);
if (a<=b) and (b<=c)
then writeln('Brojevi su uredjeni u neopadajucem
poretku')
else writeln('Brojevi nisu uredjeni u nepodajucem
poretku');
readln
end.

var
x,y:real;
begin
writeln ('Unesite argument:');
readln(x);
if x<0
then y:=-2*x+1
else if x<1
then y:=x
else y:=sqr(x);
writeln('y=',y:0:2);
readln
end.

17

PASCAL

41. Napisati program kojim se dva data realna broja

42. Napisati program kojim se vrednosti tri broja

premetaju tako da vai poredak AB

premetaju tako da vai poredak ABC

var
a,b,p:real;
begin
writeln ('Unesite u jednoj liniji A,B:');
readln(a,b);
if a>b then
begin
p:=a;
a:=b;
b:=p;
end;
writeln(a:10:2,b:10:2);
readln
end.

var
a,b,c,p:real;
begin
writeln ('Unesite a,b,c:');
readln(a,b,c);
if a>b then
begin
p:=a;a:=b;b:=p;
end;
if a>c then
begin
p:=a;a:=c;c:=p;
end;
if b>c then
begin
p:=b;b:=c;c:=p;
end;
writeln(a:10:2,b:10:2,c:10:2);
readln
end.
44. .Napisati naredbu uslovnog prelaska kojom se za
dato x po formuli izraunava y.

43. Napisati naredbu uslovnog prelaska kojom se


vrednosti promenljive f izraunavaju po formuli.
{

}
{

var
a,b,f:integer;
begin
writeln ('Unesite a:');
readln(a);
writeln ('Unesite b:');
readln(b);
if a mod 2 <> 0 then
begin
f:=a+b;
end
else if a mod 2 = 0 then
begin
f:=a*b;
end;
writeln(f);
readln
end.

var
x,y:integer;
begin
writeln ('Unesite x:');
readln(x);
if x<0 then y:=-5
else if x<1 then y:=x+2
else if x<5
then y:=3*x-1
else y:=2*x;
writeln(y);
readln
end.

18

PASCAL

45. Napisati program koji za tri uneta broja A,B,C


odredjuje zbir dva najmanja.

46. Napisati program koji za dve razliite


promenljive A i B ispituje da li je veda od njih deljiva
sa manjom bez ostatka.

var
a,b,c,p:real;
begin
writeln ('Unesite a,b,c:');
readln(a,b,c);
if a>b
then
begin
p:=a;a:=b;b:=p;
end;
if a>c
then
begin
p:=a;a:=c;c:=p;
end;
if b>c
then
begin
p:=b;b:=c;c:=p;
end;
writeln(a+b:10:2);
readln
end.

var
broj1,broj2:integer;
begin
writeln ('Unesite broj1:');
readln(broj1);
writeln ('Unesite broj2:');
readln(broj2);
if broj1>broj2 then
begin
if broj1 mod broj2 = 0 then
writeln('Broj1 je deljiv brojem2')
else
writeln('Broj1 nije deljiv brojem2')
end
else if broj2>broj1 then
begin
if broj2 mod broj1 = 0 then
writeln('Broj2 je deljiv brojem1')
else
writeln('Broj2 nije deljiv brojem1')
end;
readln
end.

47. Napisati naredbu uslovnog prelaska koijm se za


dato x izrauava y po formuli:

y=

48. Napisati program koji ispituje u kojem se


kvadrantu nalazi trougao koga obrazuju prava
odredjena jednainom y = ax+b i koordinate ose.
var
a,b:real;
begin
writeln ('Unesite koeficiente a i b:');
readln(a,b);
if b>0 then
if a<0
then writeln('U prvom kvadrantu')
else writeln('U drugom kvadrantu')
else
if a<0
then writeln('U trecem kvadrantu')
else writeln('U cetvrtom kvadrantu');
readln
end.

var
x,y,z:real;
begin
writeln ('Unesite x i y:');
readln(x,y);
if x<y
then z:=(x+0.5)/(1+sqr(y))
else z:=(y+0.5)/(1+sqr(x));
writeln('z=',z:6:2);
readln
end.

19

PASCAL

49. Napisati program koji izraunava realna reenja


50. Neka se sa tastature unose celi brojevi n1, n2, i
2
n3. Napii program kojim se izraunava zbir brojeva
kvadratne jednaine ax +bx+c = 0 (a0)
koji se nalaze u intervalu 3 do 7.
var
a,b,c,x1,x2,D:real;
var
begin
n1,n2,n3,s : integer;
writeln ('Unesite koeficiente jednacine:');
begin
readln(a,b,c);
writeln('Unesi n1 : ');
D:=b*b-4*a*c;
readln(n1);
if D<0
writeln('Unesi n2 : ');
then writeln('Nema realnih resenja')
readln(n2);
else
writeln('Unesi n3 : ');
if D=0
readln(n3);
then writeln('Jednacina ima jedno resenje:',s := 0;
b/(2*a):10:2)
if ((n1 >=3) and (n1 <= 7)) then s := s+n1;
else
if ((n2 >=3) and (n2 then <= 7)) s := s+n2;
begin
if ((n3 >=3) and (n3 <= 7)) then s := s+n2;
x1:=(-b+sqrt(D))/(2*a);
writeln('Trazeni zbir je:',s:5);
x2:=(-b-sqrt(D))/(2*a);
readLn
writeln('Jednacina ima dva
end.
resenja:',x1:10:2,x2:10:2);
end;
readln
end.
51. Napisati program koji rauna ukupan broj poena uenika,tako to korisnik unosi svoj uspeh etiri kolske
godine (koji ne sme biti manji od 2,a ni vedi od 5 u suprotnom program treba da ispie Greka u unosu)
kao i broj poena na prijemnom ( koji ne sme biti manji od 0 niti vedi od 60).
var
Prva,Druga,Treca,Cetvrta,Skola,Prijemni,Bodovi:real;
begin
writlne('Unesite uspeh u I godini:');
readln(Prva);
writeln ('Unesite uspeh u II godini:');
readln(Druga);
writeln ('Unesite uspeh u III godini:');
readln(Treca);
writeln ('Unesite uspeh u IV godini:');
readln(Cetvrta);
writeln ('Unesite broj osvojenih poena na prijemnom:');
readln(Prijemni);
skola:=(prva+druga+treca+cetvrta)*2;
Bodovi:=Skola+Prijemni;
if (Prva>=2) and (prva<=5) and (druga>=2) and (druga<=5) and
(treca>=2) and (treca<=5) and (cetvrta>=2) and (cetvrta<=5) and (prijemni<=60) and (prijemni>=0) then
writeln('Ukupan broj bodova je ',bodovi:5:2)
else
writeln('Pogresili ste negde u unosu podataka!');
readln
end.

20

PASCAL

Case naredba
Case grananje koristi se kod postojanja potrebe za determiniranjem vie od dva moguda ishoda toka
programa, i to svakoga od njih pod razliitim uslovima (odnosno pod razliitom dodelom vrednosti
varijabli do kojih programski izraz moe dodi pripadnom I/O funkcijom).

CASE Varijabla of
1: {naredba 1};
2: {naredba 2};
3: {naredba 3};
4: {naredba 4};
{...etc.}
END; {case}

Za koridenje strukture Case potrebno je da vrednost kondicionalne varijable bude ved poznata, odnosno
izraunata u trenutku evaluacije Case grananja, za razliku od If-Then-Else strukture gde se kondicionalna
varijabla moe izraunati u okviru samog izraza, odnosno moe se navesti izraz koji rauna vrednost
varijable umesto njene konkretne vrednosti. Npr:

IF (abs(broj)>=10) THEN naredba;

...za razliku od:


CASE broj of
0: {naredba 1};
5: {naredba 2};
10: {naredba 3};
20: {naredba 4};
{...etc.}
END; {case}

...gde je potrebno navesti konkretne vrednosti koje inicijaliziraju neku proceduru.

21

PASCAL

Primeri zadataka sa case naredbom


52. Dodeliti vrednost max vedem od dva uneta

53. Napisati case naredbu kojom se na osnovu

broja.

brojnih ocena 5,4,3,2,1 ispisuju opisne ocene


odlian,vr.dobar,dobar

var
a,b,max:integer;
begin
writeln ('Unesite a,b:');
readln(a,b);
case a>b of
true:max:=a;
false:max:=b;
end;
writeln('Najveci je:',max);
readln
end.

var
ocena:integer;
begin
writeln ('Unesite ocenu:');
readln(ocena);
case ocena of
5:writeln('odlican');
4:writeln('vrlo dobar');
3:writeln('dobar');
2:writeln('dovoljan');
1:writeln('nedovoljan');
end;
readln
end.

54. Napisati program koji za dati redni broj dana u


nedelji tampa ime dana.

55. Napisati program koji ispisuje mogude vrednosti


koordinata x i y zavisno od broja kvadranta koji se
unosi.

var
d:integer;
begin
writeln ('Unesite broj rednog dana u nedelji:');
readln(d);
writeln ('To je:');
case d of
1:writeln('ponedeljak');
2:writeln('utorak');
3:writeln('sreda');
4:writeln('cetvrtak');
5:writeln('petak');
6:writeln('subota');
7:writeln('nedelja');
end;
readln
end.

var
broj:integer;
begin
readln(broj);
case broj of
1:writeln('x i y su veci od nule');
2:writeln('x je manje od nule,y je vece od nule');
3:writeln('x i y su manji od nule');
4:writeln('x je vece od nule,y je manje od nule');
end;
readln
end.

22

PASCAL

56. Napisati program koji za dati mesec ispisuje

57. Napisati program koji zavisno od vrednosti

njegov broj dana.U sluaju meseca februrar pitati


korisnika da li je godina prestupna.

indikatora N izraunava povrinu geometrijskih


figura: 1-pravougaonik , 2 trougao, 3-trapez, 4
krug. Nakon izbora gemetrijske figure unose se
odgovarajudi podaci.

var
mesec:integer;
prestupna:char;
begin
writeln ('Unesite broj meseca 1 i 12:');
readln(mesec);
if (mesec<1) and (mesec>12)
then writeln('Broj meseca je nekonkretan')
else
case mesec of
1,3,5,7,8,10,12:writeln('31 dan');
4,6,9,11:writeln('30 dana');
2:begin
writeln ('Da li je godina prestupna(D/N)?');
readln(prestupna);
if (prestupna='D') or (prestupna='d')
then writeln('29 dana')
else writeln('28 dana');
end;
end;
readln
end.

var
a,b,h,r,s:real;
n:integer;
begin
writeln ('Unesite tip:(1-pravougaonik,2-trougao,3trapez,4-krug):');
readln(n);
case n of
1:begin
writeln ('Unesite duzine stranice pravougaonika:');
readln(a,b);
s:=a*b;
end;
2:begin
writeln ('Unesite osnovicu i visinu trougla:');
readln(a,h);
s:=a*h/2;
end;
3:begin
writeln ('Unesite osnovice i visinu trapeza:');
readln(a,b,h);
s:=(a+b)*h/2;
end;
4:begin
writeln ('Unesite poluprecnik kruga:');
readln(r);
s:=sqr(r)*pi;
end;
end;
writeln('Povrsina je:',s:0:2);
readln
end.

23

PASCAL

58. Ako se sa ulaza uitavaju tri prirodna broja


k1,k2,k3, koji oznaavaju redni broj dana u godini,
ispitati da li oznaavaju isti dan u nedelji.Na primer
isti dan oznaavaju 2,16 i 30 ili 344,351 i 358.
var
k1,k2,k3,n1,n2,n3:integer;
begin
writeln ('Unesite tri dana u nedelji:');
readln(k1,k2,k3);
n1:=k1 mod 7;
n2:=k2 mod 7;
n3:=k3 mod 7;
if (n1=n2) and (n2=n3)
then writeln('Oznacavaju isti dan u nedelji')
else writeln('Ne oznacavaju isti dan u nedelji');
readln
end.

59. Napisati program kojim se za uitani ugao u


stepenima koji moe biti vedi od 360 odredjuje
kvadrant kome pripada.
var
u:integer;
begin
writeln ('Unesite ugao u stepenima:');
readln(u);
u:=u mod 360;
case u div 90 of
0:writeln('Prvi kvadrant');
1:writeln('Drugi kvadrant');
2:writeln('Treca kvadrant');
3:writeln('Cetvrti kvadrant');
end;
readln
end.

60. Napisati program kojim se uitava znak za operaciju (+,-,*,/) i dva realna operanda, a zatim tampa
rezultat. Program treba da simulira kalkulator.
var
broj1,broj2,rezultat:real;
operator:char;
def:boolean;
begin
writeln ('Unesite broj1:');
readln(broj1);
writeln ('Unesite operaciju:');
readln(operator);
writeln ('Unesite broj1:');
readln(broj2);
def:=true;
case operator of
'+':rezultat:=broj1+broj2;
'-':rezultat:=broj1-broj2;
'*':rezultat:=broj1*broj2;
'/':if broj2 = 0
then begin
def:=false;
writeln('Nedefinisano je deljenje sa nulom')
end
else
rezultat:=broj1/broj2;
end;
if def then writeln('Rezultat=',rezultat:10:3);
readln
end.
24

PASCAL

Naredbe petlje
FOR,WHILE,REPEAT

Naredbe ponavljanja su for, while i repeat, a oblici i pravila njihova koristjenja su:

FOR broja = x TO y DO {...};


WHILE {...} DO {...}; {dok je istinit uslov ... -> ponavljaj ...}
REPEAT {...} UNTIL {...}; {ponavljaj ... -> sve dok ne bude ...}.

FOR petlja
Naredba for umogudava bezuslovno ponavljanje nekog dela programa odreeni broj puta. U okviru for
petlje neophodno je definisati brojaku promenljivu (broja) koja de se u svakom prolasku kroz
petlju (iteraciji) uvedavati ili umanjivati za jedan u zavisnosti od toga da li je u okviru for naredbe
navedena rezervisana re to (za uvedavanje) ili downto (za umanjivanje). Pored toga potrebno je navesti
i poetnu i krajnju vrednost brojake promenljive. Naredbe unutar for petlje se izvravaju za svaku
vrednost brojake promenljive, sve dok ona ne dostigne krajnju vrednost. Upravljaka promenljiva moe
biti integer, boolean ili char tipa. U Pascal-u nije mogude definisati za koliko se uvedava ili umanjuje
brojaka promenljiva. Korak promene je uvek 1 (u sluaju to), odnosno -1 (u sluaju downto). Poetna i
krajnja vrednost se izraunavaju na poetku petlje i ne mogu se menjati tokom njenog izvravanja.

Algoritam

1. Uitati n
2. Za i = 1 do n radi
2.1 tampaj vrednost i
2.2 idi na i = 2

25

PASCAL

Primeri zadataka sa FOR petljom


61. Napisati program kojim se ispisuju velika slova
latininog alfabeta i njihovi redni brojevi.
var
slovo:char;
begin
for slovo:='A' to 'Z' do
writeln(slovo,' ',ord(slovo));
readln
end.

63. Napisati program koji ispisuje sve parne brojeve


od 1 do unetog n.
var
broj,n:integer;
begin
writeln('Unesite n:');
readln(n);
for broj:=1 to n
do
if broj mod 2 = 0 then
writeln('Parni brojevi su:',broj);
readln

end.

62. Za vrednost od 1 do n unetog broja napisati i


program za uitavanje,sumiranje i tampanje njihove
sume.
var
a,s:real;
i,n:integer;
begin
writeln ('Unesite n:');
readln(n);
s:=0;
for i:=1 to n do
begin
writeln ('Unesite broj',i,':');
readln(a);
s:=s+a;
end;
writeln(s);
readln
end.
64. Sa tastature se unose 10 brojeva.Napisati
program koji rauna njihov zbir i proizvod.
var
a,zbir,proizvod:real;
i:integer;
begin
zbir:=0;proizvod:=1;
for i:=1 to 10 do
begin
writeln ('Unesi ',i,'-broj:');
readln(a);
zbir:=zbir+a;
proizvod:=proizvod*a;
end;
writeln('Zbir brojeva je:',Zbir:5:2,' Proizvod
je:',proizvod:5:2);
readln
end.

26

PASCAL

65. Preduzede plada honorarno zaposlene sa X dinara po satu.Napisati program koji za n radnika uitava ime
kao podatak tipa string (ne dui od 20 znakova) broj sati provedenih na radu i za svakog radnika ispisuje
njegovo ime,bruto zaradu,iznos poreza (16% bruto zarade),iznos doprinosa (26% bruto zarade) i neto
zaradu (bruto zarada umanjena za porez i doprinos).
var
cenasata,porez,doprinos,brutozarada,netozarada:integer;
n,i,brojsati:integer;
imeradnika:string[20];
begin
writeln ('unesite broj radnika:');
readln(n);
writeln ('unesite cenu za sat rada:');
readln(cenasata);
for i:=1 to n do
begin
writeln ('unesite ime radnika:');
readln(imeradnika);
writeln ('koliko je sati radio:');
readln(brojsati);
brutozarada:=cenasata*brojsati;
porez:=round(brutozarada*0.16);
doprinos:=round(brutozarada*0.26);
netozarada:=brutozarada-porez-doprinos;
writeln('ime':20,'brutozarada':13,'porez':12,'doprinos':12,'netozarada':12);
writeln(imeradnika:20,brutozarada:13,porez:12,doprinos:12,netozarada:12);
end;
readln
end.

66. Napisati program kojim se za dato n izraunava


faktorijel prirodnog broja n .

67. Napisati program kojim se izraunava suma


faktorijela
s=1!+2!+3!...+n!

n!=1*2*3*....*n
var
fakt,i,n:integer;
begin
writeln ('Unesite prirodan broj:');
readln(n);
fakt:=1;
for i:=2 to n do
fakt:=fakt*i;
writeln(fakt);
readln
end.

var
fakt,n,i,s:integer;
begin
writeln ('Unesite broj:');
readln(n);
s:=0;
fakt:=1;
for i:=1 to n do
begin
fakt:=fakt*i;
s:=s+fakt;
end;
writeln(fakt,' ',s);
readln
end.

27

PASCAL

68. Napisati program kojim se izraunava zbir

69. Napisati program koji proverava da li je uneti

brojeva od 1 do 100 ija je zadnja cifra 9.

broj savren ili nije i ispisuje poruku o tome. Broj je


savren ako je jednak sumi svojih delitelja
iskljuujudi njega samog. Naprimer 28 je savren
broj,jer je:
28=1+2+4+7+14

var
s,i:integer;
begin
s:=0;
for i:=1 to 100 do
if (i mod 10 = 9 ) then
s:=s+i;
writeln('Trazeni zbir je:',s:5);
readln
end.

69. Napisati program kojim se odredjuju i ispituju svi


savreni brojevi od 2 do m.Broj je savren ako je
jednak sumi svojih delitelja iskljuujudi njega samog.
Naprimer 28 je savren broj,jer je:
28=1+2+4+7+14
var
n,m,i,suma:integer;
begin
writeln ('Unesite broj:');
readln(m);
for n:=2 to m do
begin
suma:=1;
for i:=2 to n div 2 do
if n mod i = 0 then
suma:=suma+i;
if suma=n then writeln(n);
end;
readln

var
n,i,suma,a:integer;
begin
writeln ('Unesite broj:');
readln(n);
suma:=0;
for i:=1 to n div 2 do
if n mod i =0 then
suma:=suma+i;
if n=suma then
writeln('Broj je savrsen')
else
writeln('Broj nije savrsen');
readln
end.
70. Napisati program kojim se uitavaju ocene
uenika za n predmeta i izraunava njegova
prosena ocena.
var
n,i,x:integer;
s:real;
begin
writeln ('Unesite broj predmeta:');
readln(n);
s:=0;
for i:=1 to n do
begin
writeln ('Unesite iz predmeta:',i,'.');
readln(x);
s:=s+x;
end;
writeln('Prosecna ocena je:',s/n:0:2);
readln

end.

end.

28

PASCAL

71. N predavaa u centru za talente dri predavanje po ceni asa (c).Napisati program kojim se za svakog
predavaa uitava koliko je odrao asova u toku meseca i ispisuje njegova zarada.Odrediti i ukupan iznos za
isplatu.
var
cena,zarada,svega:real;
n,i,brcasova:integer;
begin
writeln ('Unesite broj predavaca:');
readln(n);
writeln ('Unesite cenu po casu predavanja:');
readln(cena);
svega:=0;
writeln('Unesite za svakog predavaca broj odrzanih casova:');
for i:=1 to n do
begin
writeln ('Unesite broj odrazanih casova predavaca ',i,'.je:');
readln(brcasova);
zarada:=cena*brcasova;
writeln('Zarada predavaca:',i,'.je:',zarada:10:2);
svega:=svega+zarada;
end;
writeln('Ukupan iznos za isplatu:',svega:10:2);
readln
end.

72. Sa tastature se uitavaju temperature za n dana u godini. Napisati program koji de odrediti maksimalnu
temperaturu za unete dane i redni broj dana kada je temperatura bila maksimalna.
var
t,maxt,n,dan,maxtdan:integer;
begin
writeln ('unesi broj dana za koje je merena temp:');
readln(n);
writeln ('unesite temperaturu na dan1:');
readln(maxt);
maxtdan:=1;
for dan:=2 to n do
begin
writeln ('unesite temp na dan',dan,':');
readln(t);
if maxt<t
then
begin
maxt:=t;
maxtdan:=dan;
end
end;
writeln('maks temp od: ',maxt,' stepeni bila je na dan: ',maxtdan);
readln
end.

29

PASCAL

73. Napisati program kojim se izraava zbir od 1 do n


brojeva.

74. Napisati program kojim se izraunava zbir od 1


do n ali samo parnih brojeva.

var
i,n,s:integer;
begin
writeln ('Unesite neki broj:');
readln(n);
s:=0;
for i:=1 to n do
begin
s:=s+i;
end;
writeln(s);
readln
end.

var
i,n,s:integer;
begin
writeln ('Unesite broj:');
readln(n);
s:=0;
for i:=1 to n do
if i mod 2 = 0 then
s:=s+i;
writeln (s);
readln
end.

75. Napisati program za proveru tanosti


matematikih formula za izraunavanje sume.
1 + 3 + 5 ++ (2n-1)=n2

76. Napisati program za proveru tanosti

var
n,i,s,r:integer;
begin
writeln ('Unesite n:');
readln(n);
s:=0;
for i:=1 to n do
s:=s+2*i-1;
r:=n*n;
writeln('s=',s,'r=',r);
if s=r
then writeln('Vazi jednakost')
else writeln('Ne vazi jednakost');
readln
end.

var
n,i,s:integer;
r:real;
begin
writeln ('Unesite n:');
readln(n);
s:=0;
for i:=1 to n do
s:=s+sqr(2*i-1);
r:=n*(4*sqr(n)-1) / 3;
writeln('s=',s,'r=',r:5:2);
if s=r
then writeln('Vazi jednakost')
else writeln('Ne vazi jednakost');
readln
end.

matematikih formula za izraunavanje sume.


12 + 32 + 52 ++ (2n-1)2 = n*(4n2-1)/3

30

PASCAL

77. Napisati program kojim se izraunava zbir prvih n 78. Napisati program koji se izraunava zbir prvih n
lanova reda:
lanova reda.

1+ + + +
var
n,i:integer;
s:real;
begin
writeln ('Unesite broj clanova:');
readln(n);
s:=0;
for i:=1 to n do
s:=s+1/i;
writeln('s=',s:10:2);
readln
end.

var
n,i:integer;
s:real;
begin
writeln ('Unesite broj clanova sume:');
readln(n);
s:=0;
for i:=1 to n do
s:=s+1/(2*i-1);
writeln('s=',s:10:2);
readln
end.

79. Napisati program kojim se izraunava zbir prvih n 80. Napisati program kojim se rauna stepen broja
lanova reda.
dva od prvog stepena do n-tog stepena.
var
n,i,z:integer;
s:real;
begin
writeln ('Unesite broj clanova sume:');
readln(n);
s:=0;
z:=1;
for i:=1 to n do
begin
s:=s+z/(2*i-1);
z:=-z;
end;
writeln('s=',s:10:2);
readln
end.

var
n,i:integer;
p:longint;
Begin
writeln ('Unesite n:');
readln(n);
p:=1;
for i:=1 to n do
begin
writeln(i:10,p:10);
p:=p*2;
end;
readln
end.

31

PASCAL

81. Napisati program kojim se izraunava suma:


S = 2 + 2 2 + 23 + + 2 n
var
n,i:integer;
p,s:longint;
begin
writeln ('Unesite n:');
readln(n);
p:=1;
s:=0;
for i:=1 to n do
begin
p:=p*2;
s:=s+p;
end;
writeln('s=',s);
readln
end.

82. Napisati program kojim se za realno x izraunava


suma:
S = x + 2x2 + 3x3 + + nxn
var
n,i:integer;
p,s,x:real;
begin
writeln ('Unesite n:');
readln(n);
writeln ('Unesite x:');
readln(x);
p:=1; s:=0;
for i:=1 to n do
begin
p:=p*x;
s:=s+i*p;
end;
writeln('s=',s:0:2);
readln
end.

82. Napisati program kojim se za realno x izraunava


suma:
S = x + x2 + x3 + + xn
var
n,i:integer;
p,s,x:real;
begin
writeln ('Unesite n:');
readln(n);
writeln ('Unesite x:');
readln(x);
p:=1; s:=0;
for i:=1 to n do
begin
p:=p*x;
s:=s+p;
end;
writeln('s=',s:0:2);
readln
end.
83. Napisati program kojim se za realno x izraunava
suma:

var
n,i:integer;
p,s,x:real;
begin
writeln ('Unesite n:');
readln(n);
writeln ('Unesite x:');
readln(x);
p:=1;
s:=1;
for i:=1 to n do
begin
p:=p*x;
s:=s+1/p;
end;
writeln('s=',s:0:2);
readln
end.

32

PASCAL

84. . Napisati program kojim se izraunava proizvod:


(

)(

)(

var
i,n,q:integer;
p:real;
begin
writeln ('Unesite n:');
readln(n);
q:=1; p:=1;
for i:=2 to n do
begin
q:=q*i;
p:=p*(1+1/q);
end;
writeln('p=',p:0:2);
readln
end.
86. Napisati program kojim se za dati prirodan broj n
izraunava:

var
i,n,fakt:integer;
s,q:real;
begin
writeln ('Unesite n:');
readln(n);
s:=0; q:=0; fakt:=1;
for i:=1 to n do
begin
fakt:=fakt*i;
q:=q+1/(i+1);
s:=s+fakt/q;
end;
writeln('s=',s:10:2);
readln
end.

85. Napisati program kojim se izraunava proizvod:


(

)(

)(

var
i,n:integer;
p:real;
begin
writeln ('Unesite n:');
readln(n);
p:=1;
for i:=2 to n+1 do
p:=p*(1-1/i);
writeln('p=',p:0:2);
readln
end.

87. Napisati program kojim se za dati prirodan broj n


izraunava:
S = 3! 6! + 9! +(-1)n+1(3n)!
var
i,n,s,z:integer;
begin
writeln ('Unesite n:');
readln(n);
s:=0; z:=-1;
for i:=1 to n do
begin
z:=-z*3*i*(3*i-1)*(3*i-2);
s:=s+z;
end;
writeln('s=',s:10);
readln
end.

33

PASCAL

88. Dat je slededi niz:


S = sin(x) + sin2(x) + sin3(x) + + sinn(x)
Napisati program koji rauna zbir ako se sa tastature
unose n i broj x:
var
zbir,pro,x:real;
n,i:integer;
begin
writeln ('Unesite zadati broj n:');
readln(n);
writeln ('Unesite broj x:');
readln(x);
zbir:=0;
pro:=1;
for i:=1 to n do
begin
pro:=pro*sin(x);
zbir:=zbir+pro;
end;
writeln('Trazeni zbir niza je:',zbir:8:5);
readln
end.
90. Napisati program kojim se,ako su dati prirodan
broj n i realan broj x izraunava.
S = sin(x) + sin(sin(x)) + + sin(sin(sin(x)))
var
i,n:integer;
s,p,x:real;
begin
writeln ('Ucitaj n:');
readln(n);
writeln ('Ucitaj x:');
readln(x);
s:=0; p:=x;
for i:=1 to n do
begin
p:=sin(p);
s:=s+p;
end;
writeln('s=',s:10:4);
readln
end.

89. Napisati program kojim se,ako su dati prirodan


broj n i realan broj x izraunava.
S = cos(x) + cos(x2) + + cos(xn)
var
i,n:integer;
s,p,x:real;
begin
writeln ('Ucitaj n:');
readln(n);
writeln ('Ucitaj x:');
readln(x);
s:=0;
p:=1;
for i:=1 to n do
begin
p:=p*x;
s:=s+cos(p);
end;
writeln('s=',s:10:2);
readln
end.
91. Napisati program kojim se izraunava proizvod
prvih n faktora izraza:

var
i,n:integer;
p:real;
begin
writeln ('Unesite n:');
readln(n);
p:=1;
for i:=1 to n do
p:=p*(2*i-1)/(2*i);
writeln('p=',p:0:2);
readln
end.

34

PASCAL

92. Priblina vrednost broja moe se odrediti


pomodu formule 4Pk gde je:
(

93. Napisati program koji od korisnika uitava realan


broj x i ceo broj n2 i potom rauna i tampa
vrednost.

var
pi,p:real;
k,i,znak:integer;
begin
writeln ('Unsite k:');
readln(k);
p:=0.0;
znak:=1;
for i:=1 to k do
begin
pi:=pi+znak/(2*i-1);
znak:=-znak;
end;
pi:=4*pi;
writeln('pi=',pi:10:8);
readln
end.

var
x,stepen,brojilac:real;
i,n,imenilac:integer;
begin
writeln ('Unesite x:');
readln(x);
writeln ('Unesite n:');
readln(n);
imenilac:=n*(n+1) div 2;
brojilac:=1;stepen:=1;
for i:=1 to n do
begin
stepen:=stepen*x;
brojilac:=brojilac+i*stepen;
end;
writeln(brojilac/imenilac:10:2);
readln;
end.
94. Napisati program koji od korisnika uitava ceo broj n 3, a potom n realnih brojeva i utvrdjuje i tampa
najvedi od tih brojeva kao i koliko se on puta pojavio. Npr za n=5 1,13 ; 2,56 ; 2.56; 3 ; 7,2; ispisuje da je
najvedi 7,2 i da se pojavio jednom.
var
n,i,br:integer;
a,max:real;
begin
writeln ('Unesite n>=3:');
readln(n);
if n<3 then
writeln('Greska')
else
writeln('Unesite broj1:');
readln(a);
max:=a; br:=1;
for i:=2 to n do
begin
writeln('Unesite broj',i,':');
readln(a);

if a>max then
begin
max:=a;
br:=1;
end
else if a = max then
br:=br+1;
end;
writeln('Max je:',max:6:2);
writeln('Pojavljuje se ',br,' puta');
readln
end.

35

PASCAL

95. Napisati program kojim se za uneto n izraunava slededa suma:


(

var
i, j, n, b: integer;
suma_g, suma_d, suma_s, suma_k: real;
begin
writeln('Unesite broj N: ');
readln(n);
suma_s:=0;
suma_g:=0;
suma_d:=1;
for j:=1 to n do
begin
b:=-1;
for i:=1 to j do
begin
suma_g:=suma_g+i;
suma_d:=suma_d*i;
b:=b*(-1);
end;
suma_s:=suma_s+b*suma_g/suma_d;
suma_k:=suma_k+suma_s;
suma_s:=0;
suma_g:=0;
suma_d:=1;
end;
writeln('Suma za uneto N je: ',suma_k:2:3);
readln
end.

36

PASCAL

96. Napisati program kojim se za uneto n izraunava 97. Napisati program kojim se izraunava suma:
slededi proizvod:
(

S 12 234 .....N (N 1) .... (2N)


var
i, j, n, k: integer;
suma_1, suma_k: real;
begin
writeln('Unesite broj N: ');
readln(n);
suma_1:=1;
for j:=1 to n do
begin
k:=2*j;
suma_1:=1;
fo i:=j to k do
suma_1:=suma_1*i;
suma_k:=suma_k+suma_1;
end;
writeln('Suma za uneto N je:
',suma_k:0:0);
readln
end.
98. Napisati program kojim se nalazi suma svih
trocifrenih brojeva iji je zbir cifara paran broj.
var
j, d, s, i, suma_i, provera: integer;
suma: longint;
begin
suma:=0;
suma_i:=0;
for i:=100 to 999 do
begin
j:=i mod 10;
s:=i div 100;
d:I div 10 mod 10;
suma_i:=j+d+s;
provera:=suma_i mod 2;
if (provera=0) then suma:=suma+i;
suma_i:=0;
end;
writeln('Suma svih trocifrenih brojeva ciji je
zbir cifara paran broj je: ', suma);
readln
end.

) (

var
i j, n: integer;
suma_1, suma_k: real;
begin
writeln('Unesite broj N: ');
readln(n);
suma_1:=1;
for j:=1 to n do
begin
for i:=j to (j+2) do
suma_1:=suma_1*i;
suma_k:=suma_k+1/suma_1;
suma_1:=1;
end;
writeln('Suma za uneto N je:
',suma_k:2:3);
readln
end.

99. Napisati program kojim se tampaju svi


etvorocifreni brojevi koji su jednaki proizvodu svojih
cifara.
var
j, d, s, h, i, suma: integer;
begin
writeln('Svi cetvorocifreni brojevi koji su jednaki
proizvodu svojih cifara su: ');
suma:=1;
for i:=100 to 9999 do
begin
j:=i mod 0;
h:=i div 1000;
s:=i div 100 mod 10;
d:=i div 10 mod 10;
suma:=j*d*s*h;
if (suma=i) then writeln(i);
suma:=1;
end;
readln
end.

37

PASCAL

100. Napisati program kojim se za uneto n


izraunava slededa suma:

var
i, j, n: integer;
suma_g, suma_d, suma_k, x: real;
begin
writeln('Unesite broj N: ');
readln(n);
writeln('Unesite broj x: ');
readln(x);
suma_d:=1;
suma_g:=1;
for j:=1 to ndo
begin
for i:=1 to j do
egin
suma_d:=suma_d*x;
suma_g:=suma_g*i;
end;
suma_d:=suma_d+j;
suma_k:=suma_k+suma_g/suma_d;
suma_d:=1;
suma_g:=1;
end;
writeln('Suma za uneto N je: ',suma_k:2:3);
readln
end.

101. Napisati program koji od korisnika uitava prirodne


brojeve n i k i potom rauna zbir k-tih stepena prvih n
prirodnih brojeva tj:
1k + 2k + 3k + + nk
var
n,k,s,i,j,p:integer;
begin
writeln('Unesite n i k:');
readln(n,k);
s:=0;
for i:=1 to n do
begin
p:=1;
for j:=1 to k do
begin
p:=p*i;
end;
s:=s+p;
end;
writeln (s);
readln
end.

38

PASCAL

WHILE Ciklus
Da bi se koristila naredba for neophodno je znati taan broj ponavljanja pre poetka izvravanja petlje.
Pored toga, za vreme izvravanja petlje nije mogude menjati poetnu i krajnju vrednost brojake
promenljive. Meutim, veoma esto je sluaj da odreeni deo programa elimo ponavljati sve dok je neki
uslov ispunjen. Na taj nain iteracije se mogu ponavljati manji ili vedi broj puta u zavisnosti od rezultata
izvravanja naredbi unutar petlje. Jedna od naredbi koja omogudava realizaciju ovakvih ciklusa je naredba
while. Osnovna karakteristika while petlje je da je to petlja sa preduslovom, to znai da se ispunjenost
uslova proverava pre izvravanja svake iteracije. Posledica toga je da je mogude da se naredbe unutar petlje
ne izvre ni jednom, ukoliko uslov u startu nije zadovoljen. Naredba while omogudava ponavljanje
odreenog dela programa sve dok je navedeni uslov ispunjen. Na poetku svake iteracije proverava se da li
je uslov ispunjen, tj. da li je vrednost logikog iskaza tano (true), a zatim, ukoliko je jeste, izvrava se jedna
naredba ili blok naredbi navedenih unutar komande while. Nakon izvrenja naredbi unutar while petlje
otpoinje nova iteracija i nova provera uslova. U trenutku kada na poetku neke iteracije vrednost logikog
izraza postane netano (false), prekida se izvravanje petlje i nastavlja se izvravanje ostatka programa.

NAPOMENA: While petlja mora biti tako napisana da garantuje da de u konanom broju iteracija navedeni
logiki izraz postati netaan (false). Na taj nain obezbeuje se mehanizam izlaska iz petlje nakon
konanog broja iteracija. Ukoliko logiki izraz nikada ne bi dobio vrednost false dolo bi do beskonanog
broja ponavljanja (tzv. mrtva petlja), odnosno do blokade izvrenja ostatka programa.

39

PASCAL

Primeri zadataka sa while petljom


102. Napisati program koji uitani broj n
transformie tako da mu se uklanjaju nule sa desne
strane.
var
n:integer;
begin
writeln ('Unesite broj:');
readln(n);
while n mod 10 = 0 do
n:=n div 10;
writeln('Broj je transformisan u:',n);
readln
end.

104. Napisati program za izraunavanje suma s


kvadrata parnih i kubova neparnih prirodnih
brojeva od n do m.
var
n,m,i,s:integer;
begin
writeln ('Unesite n,m:');
readln(n,m);
s:=0;i:=n;
while i<=m do
begin
if odd(i)
then s:=s+i*i*i
else s:=s+i*i;
i:=i+1;
end;
writeln('Suma =',s);
readln
end.

103. Napisati program koji za dati broj n ispituje da


li je stepen broja 3.
var
n:integer;
begin
writeln ('Unesite n:');
readln(n);
while n mod 3 = 0 do
n:=n div 3;
if n=1
then writeln('Broj je stepen broja 3')
else writeln('Broj nije stepen broja 3');
readln
end.
105. Napisati program koji proverava da li je uneti
broj n prost.Broj je prost ako je deljiv samo sa
jedan i samim sobom.
var
n,i,k:integer;
begin
writeln ('Input n:');
readln(n);
i:=2;
k:=round(sqrt(n));
while (i<=k) and (n mod i<>0) do
i:=i+1;
if i>k
then writeln(n,' je prost broj')
else writeln(n,' nije prost broj')
readln
end.

40

PASCAL

106. . Napisati program koji broj transformie na


proste faktore. Na primer, za 15 ispisade 5 3.
var
broj,faktor:integer;
begin
writeln ('Unesite broj:');
readln(broj);
faktor:=2;
while faktor <= broj do
if broj mod faktor = 0
then
begin
writeln (faktor,'');
broj:=broj div faktor ;
end
else
faktor:=faktor +1;
readln
end.
107. drugi nain (sa FOR petljom)
var
i,n,k:integer;
begin
for i:=100 to 999 do
begin
k:=2;
n:=trunc(sqrt(i));
while (k<=n) and (i mod k <>0) do
begin
k:=k+1;
end;
if k>n then writeln(i);
end;
readln
end.

107. Napisati program koji tampa trocifrene proste


brojeve.
var
i,n,koren:integer;
begin
n:=101;
while n<=997 do
begin
koren:=round(sqrt(n));
i:=3;
while (i<=koren) and ( n mod i<>0 ) do
i:=i+2;
if i>koren then writeln(n:8);
n:=n+2;
readln;
end
end.

108. Napisati program kojim se odredjuje n-ti lan


Fibonaijevog niza.Niz gde je novi lan jednak zbiru
prethodna dva.
1,1,2,3,5,8,13,21,34,55,89
var
fpp,fp,fn,n,i:integer;
begin
writeln ('Unesite n:');
readln(n);
fpp:=1;
fp:=1;
i:=3;
while i<=n do
begin
fn:=fp+fpp;
fpp:=fp;
fp:=fn;
i:=i+1;
end;
writeln(n,'-ti elemenat je:',fn);
readln
end.

41

PASCAL

108. drugi nain (sa FOR petljom)


var
p1,p2,p,i,n:integer;
begin
writeln('Unesite broj do kojeg racunate fibonacijev
niz');
readln(n);
p1:=1;
p2:=1;
p:=0;
for i:=3 to n do
begin
p:=p1+p2;
p1:=p2;
p2:=p;
end;
writeln(p);
readln
end.
110. Odrediti stepen i vrednost prvog stepena
dvojke koji je vedi od zadate vrednosti n.
var
n,y,i:integer;
begin
writeln ('Unesite n:');
readln(n);
y:=1;
i:=0;
while y<=n do
begin
y:=y*2;
i:=i+1;
end;
writeln('To je:',i,'-ti stepen dvojke ',y);
readln
end.

109. Napisati program koji tampa stepene dvojke ne


vede od n.
var
n,y:integer;
begin
writeln ('Unesite n:');
readln(n);
y:=1;
while y<=n do
begin
writeln(y);
y:=y*2;
end;
readln;
end.

111. Odrediti zbir neparnih prirodnih brojeva na


intervalu od 1 do n.
var
n,i,s:longint;
begin
writeln ('Unesite n:');
readln(n);
i:=1;s:=0;
while i<=n do
begin
s:=s+i;
i:=i+2;
end;
writeln('S=',s);
readln
end.

42

PASCAL

112. Odrediti najmanji broj uzastopnih parnih


brojeva poevi od 2 ije je suma vede od n.
var
n,k,a,s:integer;
begin
writeln ('Unesite n:');
readln(n);
s:=0; k:=0; a:=0;
while s<=n do
begin
a:=a+2;
s:=s+a;
k:=k+1;
end;
writeln('Najmanji broj parnih je k=',k);
readln
end.
114. Napisati program koji za dati prirodan broj n
odredjuje sumu cifara broja n.
var
n,s:integer;
begin
writeln ('Unesite n:');
readln(n);
while n>0 do
begin
s:=s+n mod 10;
n:=n div 10;
end;
writeln('Suma cifara je:',s-1);
readln
end.

113. Napisati program kojim se za dati prirodan broj


n odredjuje k-kao broj cifara u dekadnom zapisu
broja.
var
n,k:integer;
begin
writeln ('Unesite n:');
readln(n);
k:=0;
while n>0 do
begin
n:=n div 10;
k:=k+1;
end;
writeln('Broj cifara je:',k);
readln
end.
115. Napisati program koji za dati prirodan broj n
ispituje da li je n palindrom (Broj je palindrom ako je
redosled cifara gledano unazad isti kao i gledano
unapred , na primer 123321 , 1331, 2442 , 11 itd)
var
n,s,m:integer;
begin
writeln ('Unesite n:');
readln(n);
m:=n;
s:=0;
while m>0 do
begin
s:=s*10+m mod 10;
m:=m div 10;
end;
if s=n
then writeln('Broj je palindrom')
else writeln('Broj nije palindrom');
readln
end.

43

PASCAL

116. Napisati program kojim se odredjuje najvedi


zajedniki delilac prirodnih brojeva m i n.

117. Napisati program kojim se odredjuje


maksimalna vrednost u nizu. Za kraj niza unesite
nulu.

var
m,n,r:integer;
begin
writeln ('Unesite m:');
readln(m);
writeln ('Unesite n:');
readln(n);
while m mod n <> 0 do
begin
r:= m mod n;
m:=n;
n:=r;
end;
writeln('Najveci zajednicki delilac je:',n);
readln
end.

var
max,a:integer;
begin
max:=0;
writeln('Unesite niz brojeva.Za kraj unesite nulu.');
writeln ('>');
readln(a);
while a<>0 do
begin
if a>max then max:=a;
writeln ('>');
readln(a);
end;
writeln('Maksimum je:',Max);
readln
end.
118. Napisati program kojim se odredjuje koliko je 119. Napisati program kojim se odredjuje koliko je
elemenata u najduoj rastudoj seriji elemenata koji se
elemenata u najduoj seriji jednakih . Za kraj
medjusobno razlikuju za 1. Za kraj unesite nulu.
unesite nulu.
var
max,k,a,b:integer;
begin
writeln ('Unesite niz brojeva.Za kraj unesite nulu.');
writeln ('>');
readln(a);
writeln ('>');
readln(b);
max:=1;
k:=1;
while b <> 0 do
begin
if a=b
then
begin
k:=k+1;
if k>Max then max:=k;
end
else k:=1;
a:=b;
writeln ('>');
readln(b);
end;
writeln('Maksimalna serija jednakih ima:',max,' elemenata.');
readln
end.

var
max,k,a,b:integer;
begin
writeln ('Unesite niz brojeva.Za kraj unesite nulu.');
writeln ('>');
readln(a);
write('>');
readln(b);
max:=1;
k:=1;
while b <> 0 do
begin
if b-a=1
then
begin
k:=k+1;
if k>Max then max:=k;
end
else k:=1;
a:=b;
writeln ('>');
readln(b);
end;
writeln('Maksimalna serija rastucih ima:',max,' elemenata.');
readln
end.

44

PASCAL

120. Napisati program kojim se odredjuje broj


jedinica u binarnom zapisu prirodnog
broja n.
var
n,s : integer;
begin
writeln ('Unesite broj n: ');
readln(n);
s:=0;
while n > 0 do
begin
s:=s+n mod 2;
n:=n div 2;
end;
writeln('U binarnom zapisu broja ima: ',s,' jedinica');
readln
end.

121. Napisati program za izraunavanje n-tog


stepena celog broja a.
var
a,n,i,stepen:integer;
begin
writeln ('Unesite a izlozilac:');
readln(a);
writeln ('Unesite n-ti stepen:');
readln(n);
stepen:=1;
i:=1;
while i<=n do
begin
stepen:=stepen*a;
i:=i+1;
end;
writeln('Stepen=',stepen);
readln
end.

122. Napisati program kojim se u tekstu ije je obeleje kraja '*' odredjuje broj samoglasnika, suglasnika
i praznina. Tekst pisati velikim slovima latinice.
var
simbol : char;
brSamoglasnika, brSuglasnika, brPraznina : integer;
begin
brSamoglasnika := 0;
brSuglasnika := 0;
brPraznina := 0;
writeln('Unesite tekst koji se zavrsava simbolom *: ');
read(simbol);
while simbol <> '*' do
begin
case simbol of
'A','E','I','O','U' : brSamoglasnika := brSamoglasnika + 1;
'B','C','D','F','G','H','J','K','L','M','N','P','Q','R','S','T','V','W','X','Y','Z' : brSuglasnika := brSuglasnika + 1;
' ' : brPraznina := brPraznina + 1;
end;
read(simbol)
end;
writeln('Broj samoglasnika je: ', brSamoglasnika);
writeln('Broj suglasnika je: ', brSuglasnika);
writeln('Broj praznina je: ', brPraznina);
readln
end.
45

PASCAL

REPEAT ciklus

Za razliku od while petlje, naredba repeat omogudava realizaciju ciklusa sa postuslovom. Ciklus sa
postuslovom podrazumeva to da se uslov za dalje izvravanje petlje proverava na kraju svake
iteracije. Na ovaj nain naredbe unutar petlje de biti izvrene bar jednom, bez obzira na to da li je uslov
bio ispunjen pre ulaska u petlju. Naredba repeat omogudava ponavljanje odreenog dela programa sve
dok navedeni uslov nije ispunjen. To praktino znai da je (za razliku od while ciklusa) navedeni uslov
ustvari "uslov za izlazak iz petlje". U sluaju repeat petlje, izvrava se jedna naredba ili blok naredbi
navedenih unutar komande repeat. Nakon izvrenja ovih naredbi vri se provera uslova navedenog iza
rezervisane rei until. Ukoliko je vrednost logikog izraza netano (false), krede se u izvravanje sledede
iteracije. U suprotnom prekida se izvravanje petlje i nastavlja se izvravanje ostatka programa. U sluaju
repeat naredbe, rezervisane rei repeat i until istovremeno predstavljaju I graninike petlje, tako da je
upotreba rezervisanih rei begin i end za oznaavanje bloka naredbi nepotrebna.

NAPOMENA: Repeat petlja mora biti tako napisana da garantuje da de u konanom broju iteracija
navedeni logiki izraz postati taan (true). Na taj nain obezbeuje se mehanizam izlaska iz petlje nakon
konanog broja iteracija. Ukoliko logiki izraz nikada ne bi dobio vrednost true dolo bi do beskonanog
broja ponavljanja (tzv. mrtva petlja), odnosno do blokade izvrenja ostatka programa.

46

PASCAL

Primeri zadataka sa REPEAT ciklusom

123. Napisati program kojim se tampaju svi


stepeni dvojke,ne vedi od unete vrednosti
promenljive granica,koja je veda od 2.

124. Napisati program kojim se od datog prirodnog


broja n formira broj sa istim ciframa,ali u inverznom
poretku.

var
stepen,granica:integer;
begin
writeln ('Unesite granicu:');
readln(granica);
stepen:=2;
repeat
writeln(stepen);
stepen:=stepen*2;
until stepen>granica ;
readln
end.

var
n,inverz:integer;
begin
writeln ('Unesite n:');
readln(n);
inverz:=0;
repeat
inverz:=inverz*10+n mod 10;
n:=n div 10 ;
until n=0;
writeln('Inverzan broj je ',inverz);
readln
end.

125. Napisati program koji, koridenjem repeat


naredbe,odredjuje najmanji broj parnih brojeva od
2 ija je suma veda od R.

126. Priblina vrednost broja moe se odrediti


pomodu formule : 4Pk gde je:

var
s,a,k,r:integer;
begin
writeln ('Unesite R:');
readln(r);
s:=0;
a:=0;
k:=0;
repeat
a:=a+2;
s:=s+a;
k:=k+1;
until s>r;
writeln ('K=',k);
readln
end.

var
clan,suma,eps:real;
znak,i:integer;
begin
writeln ('Unesite eps:');
readln(eps);
znak:=-1; {*promenljiva kontrolose promenu znaka clana sume*}
clan:=1.0; {*prvi clan suma*}
suma:=1.0; {*sumu uzima vrednost prvog clana*}
i:=1;
repeat
clan:=znak/(2*i+1); {*tekuci clan sume*}
suma:=suma+clan; {*uvecavanjem sume za tekuci clan*}
znak:=-znak;
i:=i+1;
until abs(clan)<eps;
writeln('Broj pi je jednak:',4*suma:4:10);
readln
end.

47

PASCAL

Nizovi array
Nizovi u programskom jeziku Pascal predstavljaju nain da se efektivno radi sa velikim
brojem promenljivih istog tipa. Na primer, problemi koji zahtevaju da se istovremeno obrauje 10000
brojeva bi se veoma teko mogli realizovati tako to bi se deklarisalo 10000 razliitih promenljivih i onda
radilo sa njima.
ARRAY je struktura podataka koja se sastoji od skupa elemenata istog tipa.
Deklaracija varijable ovoga tipa vri se na slededi nain:
VAR ime niza : ARRAY[v1..v2] OF T1;
gde je:
v1..v2 - interval indeksa s time da je v1 donja a v2 gornja granica indeksa; kao
indeks moe se pojaviti bilo koji prosti tipovi osim real
T1 - tip elemenata u nizu koji moe biti bilo koji tip
Evo primera promenljive nizovnog tipa:
Var A : array [1 .. 10000] of integer;
ovde ime A oznaava sloenu promenljivu koja se sastoji od 10000 elemenata , a svaki od tih elemenata
moe da primi jedan ceo broj.
Pojedinani elementi niza se ponaaju kao obine promeniljive tipa integer, a oznaavaju se ovako: A[1],
A[2], . . . , A[10000]. Na primer, A*3+ := 5; znai da je tredem lanu niza dodeljena vrednost 5.
Ili primer deklaracije niza merenih temperatura u toku jednog meseca:
VAR temp : ARRAY [1..31] OF real;
indeks
temp

[1]
-3.2

[2]
5.0

[3]
0.0

[4]
11.4

[5]
7.5

[6]
-1.8

[29]
9.3

[30]
6.5

[31]
2.8

Do svakog elementa u nizu moemo dodi koridenjem imena niza i pozicije - indeksa
tog elementa u nizu:
temp[1], temp[2], temp[3] temp[i], temp[i+1], temp[i+j]
Takve promenljive zovemo indeksirane promenljive, a njih koristimo kao i bilo koju drugu
pojedinanu promenljivu. Evo nekoliko primera:
1) elimo li nekom elementu niza pridruiti odreenu vrednost, to demo uiniti ovako:
temp[4] := 11.4
2) elimo li estom elementu niza temp uitati vrednost preko tastature
Read (temp[6]) ; ili Write (abs(temp[2+)) de ispisati apsolutnu vrednost drugog lana niza;
Na isti nain koristimo ostale naredbe, operacije i funkcije nad pojedinim elementima niza.
Iako u deklaraciji moramo odrediti najvedu duinu niza i njegovu dimenziju, u obradi ne moramo koristiti
sve njegove elemente, nego samo odreeni potrebni deo.Vrednosti elemenata niza u poetku nisu
definisane. Ukoliko elimo uneti vrednosti za sve ili vedinu elemenata niza, to inimo unutar naredbe za
ponavljanje. Isti sluaj je sa ispisivanjem vrednosti pojedinih elemenata niza.

48

PASCAL

Primeri zadataka sa nizovima - ARRAY

127. Dat je niz n proizvoljnih realnih brojeva,


n<=100. Napisati program za izraunavanje sume
elemenata niza.

128. Napisati program kojim se unose lanovi niza i


izraunava srednja vrednost niza x od n elemenata.
var
x:array[1..50] of real;
i,n:integer;
suma:real;
begin
writeln('Unesite broj elemenata niza,ne veci od 50:');
readln(n);
suma:=0; for i:=1 to n do
begin
writeln('Unesi x[',i,']=');
readln(x[i]);
suma:=suma+x[i];
end;
writeln('Srednja vrednost niza je:',suma/n:10:2);
readln
end.

var
a:array[1..100] of real;
i,n:integer;
s:real;
begin
writeln('Unesite n (n<100)');
readln(n);
for i:=1 to n do
begin
writeln('A[',i,']='); readln(a[i]) ;
end;
s:=0;
for i:=1 to n do
s:=s+a[i];
writeln('S=',s:10:3);
readln;
end.

129. Napisati program kojim se izraunava maksimalna vrednost niza x od n elemenata (n50).
var
x:array[1..50] of real;
max:real;
i,n:integer;
begin
writeln('unesite broj elemenata niza,ne veci od 50:');
readln(n);
writeln('unesite elemente niza->');
for i:=1 to n do
begin
writeln('unesi x[',i,']=');
readln(x[i]);
end;
max:=x[1];
for i:=2 to n do
if max<x[i]
then mxx:=x[i];
writeln('maximum niza je:',maxx:10:2);
readln
end.

49

PASCAL

130. Napisati program koji od korisnika uitava

131. Dat je prirodan broj N.Napisati program koji

ceo broj n, 1 n 5000 , potom n realnih brojeva i


odredjuje koliko njih je strogo vede od proseka svih
uitanih realnih brojeva.
var
n,i,k:integer;
suma,prosek:real;
a:array[1..5000] of real;
begin
writeln('Unesite n:');
readln(n);
if (n<1) or (n>5000) then
writeln('n mora biti izmedju 1 i 5000')
else begin
writeln('Unesite ',n,' brojeva:');
for i:=1 to n do readln(a[i]);
suma:=0.0;
for i:=1 to n do suma:=suma+a[i];
prosek:=suma/n;
k:=0;
for i:=1 to n do
if a[i] > prosek then k:=k+1;
writeln('Ima ih:',k);
end;
readln
end.

de generisati i odtampati niz cifara broja N,


poevi od cifre najmanje teine.
(Primer:N=4235,NIZC=[4,2,3,5]
var
n:longint;
k,i:integer;
c:array [1..10] of integer;
begin
writeln('Unesite n:');
readln(n);
if n<1 then
writeln('n mora biti pozitivan')
else begin
k:=0;
while n>0 do begin
k:=k+1;
c[k]:=n mod 10;
n:=n div 10;
end;
for i:= 1 downto 1 do write(',',c[i]);
writeln(']');
end;
readln
end.

50

PASCAL

132. Napisati program koji unesene brojeve sortira


u rastudem redosledu.

133. Napisati program za odreivanje najmanjeg


lana niza a*i+,i=1,30 i njegovog rednog mesta u
nizu.

var
x :array[1..50] of integer;
l, i, j, n, p : integer;
begin
writeln('Unesite broj clanova niza :');
readln(n);
writeln('unesite clanove niza');
for l :=1 to n do
Begin
writeln('x[',l,']= ');
readln(x[l]);
for i:= 1 to l-1 do
begin
for j:=i+1 to l do
if x[i] > x[j] then begin p :=x[i]; x[i] :=x[j]; x[j] :=p
end;
end;
end;
writeln('Sortirani niz');
for i :=1 to n do
writeln('x[',i,']= ',x[i]);
readln
end.

var
a: array[1..30] of real;
i, d, min_i: integer;
min: real;
begin
writeln('Unesite duzinu niza: ');
readln(d);
while ((d>=0) and (d<=30)) do
begin
writeln('Unesite clanove niza: ');
for i:=1 to d do
readln(a[i]);
min_i:=1;
min:=a[1];
for i:=2 to d do
if (min>=a[i]) then
begin
min:=a[i];
min_i:=i;
end;
writeln('Najmanji element niza a je: ', min:2:3,' i
on je ', min_i,' element.');
writeln('Unesite duzinu niza: ');
readln(d);
end;
readln
end.

51

PASCAL

134. . Sastaviti program za odreivanje najmanjeg


lana niza iji su indeksi neparni i najvedeg lana
niza iji su indeksi parni.

135. . Napisati program kojim se na osnovu nizova


b[1], b[2],...,b[n] i c[1], c[2],...,c[n] formira niz a[1],
a*2+,...,a*2n+ ije su vrednosti b*1+, c*1+,b*2+
,c[2],..., b[n],c[n].

var
a: array[1..30] of real;
i, d, j, min_i, max_i: integer;
min, max: real;
begin
writeln('Unesite duzinu niza: ');
readln(d);
while ((d>=0) and (d<=30)) do
begin
writeln('Unesite clanove niza: ');
for i:=1 to d do
readln(a[i]);
min_i:=1;
min:=a[1];
j:=2;
for i:=j+1 to d do
begin
if (min>=a[i]) then
begin
min:=a[i];
min_i:=i;
end;
j:=j+1;
end;
max_i:=2;
max:=a[2];
j:=2;
for i:=j to d do
begin
if (max<=a[i]) then
begin
max:=a[i];
max_i:=i;
end;
j:=j+2;
end;
writeln('Najmanji element na neparnom mestu niza a
je: ', min:2:3,' i on je ', min_i,'. element.');
writeln('Najveci element na parnom mestu niza a je:
', max:2:3,' i on je ', max_i,'. element.');
writeln('Unesite duzinu niza: ');
readln(d);
end;
readln
end.

var
a: array[1..60] of real;
b: array[1..30] of real;
c: array[1..30] of real;
i, d, j, n: integer;
begin
writeln('Unesite duzinu niza: ');
readln(n);
while ((n>=0) and (n<=30)) do
begin
d:=2*n;
writeln('Unesite clanove niza b: ');
for i:=1 to n do
readln(b[i]);
writeln('Unesite clanove niza c: ');
for i:=1 to n do
readln(c[i]);
writeln('Clanovi niza a su: ');
i:=1;
j:=1;
while (i<=d) do
begin
a[i]:=b[j];
i:=i+2;
j:=j+1;
end;
i:=2;
j:=1;
while (i<=d) do
begin
a[i]:=c[j];
i:=i+2;
j:=j+1;
end;
for i:=1 to d do
writeln(a[i]:2:3);
writeln('Unesite duzinu niza: ');
readln(n);
end;
readln
end.

52

PASCAL

136. . Napisati program kojim se elementi niza


a*1+, a*2+,...,a*n+ premetaju u inverzni poredak.

137. Napisati program kojim se niz a[1], a[2],...,a[n]


sortira u monotono neopadajudi poredak.

var
a: array[1..30] of real;
i, j, n: integer;
p: real;
begin
writeln('Unesite duzinu niza: ');
readln(n);
while ((n>=0) and (n<=30)) do
begin
writeln('Unesite clanove niza: ');
for i:=1 to n do
readln(a[i]);
i:=1;
j:=n;
while (i<=(n/2)) do
begin
p:=a[i];
a[i]:=a[j];
a[j]:=p;
i:=i+1;
j:=j-1;
end;
writeln('Niz sa inverznim redosledom izgleda');
for i:=1 to n do
writeln(a[i]:2:3);
writeln('Unesite duzinu niza: ');
readln(n);
end;
readln
end.

var
a: array[1..30] of real;
i, j, n: integer;
p: real;
begin
writeln('Unesite duzinu niza: ');
readln(n);
while ((n>=0) and (n<=30)) do
begin
writeln('Unesite clanove niza: ');
for i:=1 to n do
readln(a[i]);
for i:=1 to n-1 do
for j:=i+1 to n do
if (a[i]>a[j]) then
begin
p:=a[i];
a[i]:=a[j];
a[j]:=p;
end;
writeln('Niz sortiran po monotono
neopadajucim poredkom izgleda:');
for i:=1 to n do
writeln(a[i]:2:3);
writeln('Unesite duzinu niza: ');
readln(n);
end;
readln
end.

53

PASCAL

138. Napisati program za odreivanje i prikazivanje 139. Neka je dat niz xx od n elemenata. Napisati
dva najveda elementa niza A*i+.
program kojim se rauna zbir lanova niza koji su
deljivi sa 3 i 7.
var
a: array[1..30] of real;
g: array[1..30] of real;
var
i, d: integer;
xx:array[1..1000] of integer;
max_1, max_2, p: real;
s : real;
begin
i, n: integer;
writeln('Unesite duzinu niza: ');
begin
readln(d);
writeln('Unesi broj clanova niza :');
while ((d>=0) and (d<=30)) do
readln(n);
begin
for i := 1 to n do
writeln('Unesite clanove niza: ');
begin
for i:=1 to d do
writeln('Unesi - ',i:3,' clan : ');
readln(a[i]);
readln(xx[i])
max_1:=a[1];
end;
for i:=2 to d do
s := 0;
if (max_1<a[i]) then
for i := 1 to n do
max_1:=a[i];
if (xx[i] mod 3 = 0) and (xx[i] mod 7 = 0)
for i:=1 to d do
then s := s+xx[i];
if (max_1=a[i]) then
writeln('Zbir trazenih clanova niza je: ',s:8:5);
begin
readln
p:=a[i];
end.
a[i]:=a[1];
a[1]:=p;
end;
max_2:=a[2];
for i:=3 to d do
if (max_2<=a[i]) then
max_2:=a[i];
writeln('Dva najveca elementa niza a su: ',
max_1:2:3,' i ', max_2:2:3);
writeln('Unesite duzinu niza: ');
readln(d);
end;
readln
end.

54

PASCAL
140. Neka su data dva niza xx i yy od po
pet lanova. Napii program kojim se rauna
ukupan broj parova nizova koji na istom indeksu i
imaju jednake elemente.
var
xx, yy :array[1..5] of real;
i, br: integer;
begin
for i := 1 to 5 do
begin
writeln('Unesi - ',i:3,' clan niza xx : ');
readln(xx[i])
end;
for i := 1 to 5 do
begin
writeln('Unesi - ',i:3,' clan niza yy : ');
readln(yy[i])
end;
br := 0;
for i := 1 to 5 do
if (xx[i] = yy[i]) then br := br+1;
writeln('Trazeni broj parova je: ',br:5);
readln
end

141. Neka je dat niza xx od 5 elemenata. Napii


program kojim se formira niz yy od elemanata niza
xx koji su parni.
var
xx, yy : array[1..5] of integer;
i, j: integer;
begin
for i := 1 to 5 do
begin
writeln('Unesi - ',i:3,' clan niza xx : ');
readln(xx[i])
end;
j := 1;
for i := 1 to 5 do
if (xx[i] mod 2 = 0) then
begin
yy[j] := xx[i]; j :=j+1
end;
writeln('Novodobijeni niz je:');
for i := 1 to j-1 do
writeln(yy[i]);
readln
end.

55

PASCAL

142. . Ispred blagajne je poreano n ljudi sa svojim 143. Napisati program koji odreuje indeks i
visinama h [1], h [2], ..., h [n] u tom redosledu.
Napisati program koji odreuje broj ljudi koje vidi
blagajnik sa poetka reda. Na primer, za ljude sa
visinama 155, 170, 165, 180, 175, 195, blagajnik
vidi prvog, drugog, etvrtog i estog oveka
odgovor je 4.
var
h:array[1..100] of integer;
i,n,maxv,brvid: integer;
begin
writeln ('Unesi broj ljudi: ');
readln(n);
writeln('Unesi visine ljudi:');
for i:= 1 to n do
readln(h[i]);
brvid := 1;
maxv := h[1];
for i := 2 to n do
if h[i] >= maxv then
begin
brvid := brvid + 1;
maxv := h[i];
end;
writeln('Broj ljudi koje vidi blagajnik je: ', brvid);
readln
end.

vrednost prvog lana u nizu koji je najblii srednjoj


vrednosti niza.
var
a: array[1..10] of integer;
i,n,s,ind,vr: integer;
sv,razlika: real;
begin
writeln('koliko elemenata ima niz ?');
readln(n);
s := 0;
writeln('unos niza');
for i:= 1 to n do
begin
writeln ('unesi ', i , '.element: ');
readln(a[i]);
s := s + a[i];
end;
sv := s/n;
ind := 1;
vr := a[1];
razlika := abs(sv - a[1]);
for i:=2 to n do
if razlika > abs(sv - a[i]) then
begin
ind := i;
vr := a[i];
razlika := abs(sv - a[i]);
end;
writeln('Indeks najblizeg clana: ', ind, ' Vrednost: ',
vr);
readln
end.

56

PASCAL

144. Napisati program koji de ispitati da li je niz

145. Neka je dat niz a od 10 elemeneta. Napii

b[1],...,b[k] podniz niza a[1],...,a[n]. Niz b je podniz


niza a ukoliko postoji indeks s (1 s n) tako da
vai: a*s+=b*1+, a*s+1+=b*2+,..., a*s+k-1]=b[k].

program kojim se sraunava ukupan broj brojeva


koji su meusobno jednaki.

var
i, j, n, k: integer;
a,b: array[1..100] of integer;
begin
readln(n);
for i := 1 to n do
readln(a[i]);
readln(k);
for i := 1 to k do
readln(b[i]);
i:=1; j:=1;
while (i<=n) and (j<=k) do
if a[i] = b[j] then
begin
i:=i+1; j:=j+1;
end
else
begin
i:=i-j+2; j:=1;
end;
if j=k+1 then
writeln('je podniz')
else
writeln('nije podniz');
readln
end.

var
a, c : array[1..10] of real;
i, j, k, br: integer;
begin
for i := 1 to 10 do
c[i] := 0;
for i := 1 to 10 do
begin
writeln('Unesi - ',i:3,' clan niza a : ');
readln(a[i])
end;
br := 0; k := 0;
for i := 1 to 9 do
begin
for j := i+1 to 10 do
if (c[j] = 0) and (a[i]=a[j]) then
begin
br := br + 1;
c[j] := 1;
c[i] := i;
end;
end;
for j := 1 to 10 do
if c[j] = j then
br :=br+1;
writeln('Ukupan broj jednakih brojeva je: ',br:5);
readln
end.

57

PASCAL

146. Uitati lanove niza. Izraunati i ispisati sumu


parnih i neparnih lanova niza odvojeno.
Const n=15;
var
i : integer;
x : array [1..15] of integer;
s,s1: longint;
begin
writeln('upisati clanove niza: ');
for i := 1 to n do
begin
writeln (i,' --> ');
readln(x[i]);
end;
s:=0;
s1:=0;
for i:=1 to n do
begin
if x[i] mod 2 = 0 then
s:= s + x[i];
if x[i] mod 2 <> 0 then
s1:= s1 + x[i];
end;
writeln('suma parnih clanova niza: ',s);
writeln('suma neparnih clanova niza: ',s1);
readln
end.

147. Uitati lanove niza. Izraunati i ispisati broj


lanova niza vedih od aritmetike sredine i njihovu
sumu.

Const n=5;
var
i, s, br : integer;
as : real;
x : array [1..5] of integer;
begin
writeln('suma i broj clanova vecih od aritmeticke
sredina clanova niza');
for i := 1 to n do
begin
writeln (i,' --> ');
readln(x[i]);
end;
s :=0;
br :=0;
for i := 1 to n do {izlaz}
begin
s := s + x[i];
br:=br+1;
end;
as := s / br;
s :=0;
br :=0;
writeln('aritmeticka sredina = ', as);
for i := 1 to n do {izlaz}
if x[i] > as then
begin
s := s + x[i];
br:=br+1;
end;
writeln('suma clanova vecih od as = ', s, ' broj
clanova vecih od as = ', br);
readln
end.

58

PASCAL

148. Izraunati proizvod pozitivnih lanova niza


deljivih sa 4.

149. Uitati lanove niza. Mnoiti lanove niza sve


dok je proizvod manji od 541.

Const n=50;
var
i, br : integer;
x : array [1..50] of integer;
p : real;
begin
writeln('proizvod pozitivnih lanova niza djeljivih
sa 4');
for i := 1 to n do
begin
writeln (i,' --> ');
readln(x[i]);
end;
p :=1;
for i:=1 to n do
if (x[i]>0) and (x[i] mod 4 = 0) then
p:=p*x[i];
writeln('proizvod = ' ,p);
readln
end.

Const n=50;
var
i, br : integer;
x : array [1..50] of integer;
p : real;
begin
writeln('mnoiti lanove niza sve dok je proizvod
manja od 541');
for i := 1 to n do
begin
writeln (i,' --> ');
readln(x[i]);
end;
p :=1;
i:=1;
br:=0;
while (p * x[i] < 541) or br>n do
begin
p:=p*x[i];
br:=br + 1;
i:=i+1;
end;
writeln('proizvod = ' ,p);
readln
end.

59

PASCAL

150. Uitati niz od 20 brojeva i ispisati najvedi i


najmanji broj u nizu.

151. Uitati niz X od n lanova. Nadi maksimum od


lanova sa parnim indeksima.

Const n=20;
var
i, tmax, tmin : integer;
x : array [1..20] of integer;
begin
writeln('najveci clan niza');
for i := 1 to n do
begin
writeln (i,' --> ');
readln(x[i]);
end;
tmax := x[1];
tmin := x[1];
for i := 2 to n do
begin
if tmax < x[i] then
tmax := x[i];
if tmin > x[i] then
tmin := x[i];
end;
writeln('najveci clan niza ',tmax);
writeln('najmanji clan niza ', tmin);
readln
end.

Const n=5;
var
i, tmax : integer;
x : array [1..5] of integer;
begin
writeln('veci od prvog clana niza');
for i := 1 to n do
begin
writeln (i,' --> ');
readln(x[i]);
end;
tmax := x[2];
for i := 4 to n do
if (tmax < x[i]) and (i mod 2 = 0) then
tmax := x[i];
writeln('najveci clan niza s parnim indeksima
',tmax);
readln
end.

60

PASCAL

152. Uitati niz X od n lanova. Nadi minimum


i maksimum od lanova sa neparnim indeksima.

153. Uitati lanove niza. Ispisati: pozitivne, nule


pa negativne lanove niza.

Const n=5;
var
i, tmin, tmax : integer;
x : array [1..n] of integer;
begin
writeln('veci od prvog clana niza');
for i := 1 to n do
begin
writeln(i,' --> ');
readln(x[i]);
end;
tmin := x[1];
tmax := x[1];
for i := 3 to n do
begin
if (tmin > x[i]) and (i mod 2 = 1) then
tmin := x[i];
if (tmax < x[i]) and (i mod 2 = 1) then
tmax := x[i];
end;
writeln('najmanji clan niza s neparnim indeksima ',
tmin);
writeln('najveci clan niza s neparnim indeksima ',
tmax);
readln
end.

const
n = 5;
var
i, j : integer;
a, b : array [1..n] of integer;
begin
writeln('ulazniza');
for i := 1 to n do
begin
writeln(i,' --> ');
readln(a[i]);
end;
j := 1;
for i := 1 to n do
if a[i] > 0 then
begin
b[j] := a[i];
j := j + 1;
end;
for i := 1 to n do
if a[i] = 0 then
begin
b[j] := a[i];
j := j + 1;
end;
for i := 1 to n do
if a[i] < 0 then
begin
b[j] := a[i];
j := j + 1;
end;
for i := 1 to n do {izlaz}
writeln('a[',i,'] = ',a[i]);
for i := 1 to n do
writeln('b[',i,'] = ',b[i]);
readln
end.

61

PASCAL

Viedimenzionalni nizovi MATRICE

Ako se radi o velikom broju promenljivih praktino je da se one rasporede po vrstama i kolonama. Tada
kaemo da te promenljive formiraju dvodimenzionalan niz, matricu, odnosno tabelu. Sve promenljive
imaju zajedniko ime, a razlikuju se po mestu u vrsti i koloni. Npr. A*2,3+ znai da je promenljiva sa
imenom a u drugom redu i tredoj koloni.

Brojevi aij su elementi dvodimenzionalnog niza, gdje je i indeks broja vrste, a j indeks broja kolone.
Ako je m<>n pravougaoni niz
m=n kvadratni niz.

Glavna dijagonala
Elementi glavne dijagonale imaju iste indekse reda i kolone (i=j), Iznad glavne dijagonale je indeks reda
manji od indeksa kolone, a ispod glavne dijagonale je indeks reda vedi glavne dijagonale.
Sporedna dijagonala
Suma indeksa sporedne dijagonale je veda za 1 od dimenzije kvadratne matrice-dvodimenzionalnog niza
(i+j = n+1). Indeksi elemenata matrice iznad sporedne dijagonale zadovoljavaju nejednainu i+j > n+1 a
elementi ispod sporedne dijagonale zadovoljavaju nejednainu i+j < n+1.

62

PASCAL

Primeri zadataka sa viedimenzionalnim nizovima- MATRICAMA


154. Uitati i ispisati dvodimenzionalni niz matricu 2x3.
var
i,j : integer;
x : array [1..2,1..3] of integer;
begin
writeln('ulaz i izlaz niza');
for i := 1 to 2 do
for j := 1 to 3 do
begin
writeln ('x[',i,',',j,']=');
readln(x[i,j]);
end;
for i := 1 to 2 do
begin
for j := 1 to 3 do
writeln (x[i,j]:4);
end;
readln
end.

155. Uitati i ispisati dvodimenzionalni niz matricu nxn. Zatim ispisati lanove niza koji su na
glavnoj dijagonali.
var
i, j, n : integer;
x : array [1..15,1..15] of integer;
begin
writeln ('n (kvadratna matrica) =');
readln(n);
writeln('ulaz niza');
for i := 1 to n do
for j := 1 to n do
begin
writeln ('x[',i,',',j,']=');
readln(x[i,j]);
end;
for i := 1 to n do
begin
for j := 1 to n do
if i = j then
writeln (x[i,j]:4);
end;
readln
end.

63

PASCAL

156. Uitati i ispisati dvodimenzionalni niz matricu 4x4. Zatim ispisati lanove niza koji su
iznad glavne dijagonale.

157. Uitati i ispisati dvodimenzionalni niz kvadratnu matricu nxn. Zatim ispisati lanove niza
koji su ispod glavne dijagonale (i>j).

var
i, j, n : integer;
x : array [1..15,1..15] of integer;
begin
writeln ('n (kvadratna matrica) =');
readln(n);
writeln('ulaz niza');
for i := 1 to n do
for j := 1 to n do
begin
writeln ('x[',i,',',j,']=');
readln(x[i,j]);
end;
for i := 1 to n do
begin
for j := 1 to n do
if i < j then
writeln (x[i,j],' ')
else
writeln (' ');
end;
readln
end.

var
i, j, n : integer;
x : array [1..15,1..15] of integer;
begin
writeln ('n (kvadratna matrica) =');
readln(n);
writeln('ulaz niza');
for i := 1 to n do
for j := 1 to n do
begin
writeln ('x[',i,',',j,']=');
readln(x[i,j]);
end;
for i := 1 to n do
begin
for j := 1 to n do
if i > j then
writeln (x[i,j],' ')
else
writeln (' ');
end;
readln
end.

64

PASCAL

158. Uitati dvodimenzionalni niz. Ispisati parne


lanove matrice.

159. Uitati dvodimenzionalni niz. Ispisati lanove


matrice koji su deljivi sa 3.

var
i, j, n,m : integer;
x : array [1..15,1..15] of integer;
begin
writeln('n, m =');
readln(n,m);
for i := 1 to n do
for j := 1 to m do
begin
writeln('x[',i,',',j,']=');
readln(x[i,j]);
end;
for i := 1 to n do
begin
writeln;
for j := 1 to n do
if x[i,j] mod 2 = 0 then
writeln(x[i,j],' ');
end;
readln
end.

var
i, j, n, m: integer;
x : array [1..15,1..15] of integer;
begin
writeln('n, m =');
readln(n,m);
for i := 1 to n do
for j := 1 to m do
begin
writeln('x[',i,',',j,']=');
readln(x[i,j]);
end;
for i := 1 to n do
begin
writeln;
for j := 1 to m do
if x[i,j] mod 3 = 0 then
writeln(x[i,j],' ')
else
writeln(' ');
end;
readln
end.

65

PASCAL

160. Uitati dvodimenzionalni niz i formirati drugi


iji je opti lan: y ij = xij (isti nizovi). Ispisati oba
niza.
var
i,j, n, m : integer;
x, y, c : array [1..15,1..15] of integer;
begin
writeln('n m =');
readln(n,m);
writeln('matrica x');
for i := 1 to n do
for j := 1 to m do
begin
write('x[',i,',',j,']=');
readln(x[i,j]);
end;
writeln('matrica y');
for i := 1 to n do
for j := 1 to m do
y[i,j] := x[i,j];
writeln('izlaz matrica x');
for i := 1 to n do
begin
for j := 1 to m do
writeln(x[i,j]:4);
end;
writeln('izlaz matrica y');
for i := 1 to n do
begin
for j := 1 to m do
writeln(y[i,j]:4);
end;
readln
end.

161. Uitati dva dvodimenzionalna niza i formirati


tredi iji je opti lan: cij = xij + yij.
var
i,j, n, m : integer;
x, y, c : array [1..15,1..15] of integer;
begin
writeln('n m =');
readln(n,m);
writeln('matrica x');
for i := 1 to n do
for j := 1 to m do
begin
writeln('x[',i,',',j,']=');
readln(x[i,j]);
end;
writeln('matrica y');
for i := 1 to n do
for j := 1 to m do
begin
writeln('y[',i,',',j,']=');
readln(y[i,j]);
end;
for i := 1 to n do
for j := 1 to m do
c[i,j] := x[i,j] + y[i,j];
writeln('izlaz matrica x');
for i := 1 to n do
begin
for j := 1 to m do
writeln(x[i,j]:4);
end;
writeln('izlaz matrica y');
for i := 1 to n do
begin
for j := 1 to m do
writeln(y[i,j]:4);
end;
writeln('izlaz matrica c');
for i := 1 to n do
begin
for j := 1 to m do
writeln(c[i,j]:4);
end;
readln
end.

66

PASCAL

162. Uitati dva dvodimenzionalna niza i formirati


tredi iji je opti lan: cij = xij + 2yij.
var
i,j, n, m : integer;
x, y, c : array [1..15,1..15] of integer;
begin
writeln('n m =');
readln(n,m);
writeln('matrica x');
for i := 1 to n do
for j := 1 to m do
begin
writeln('x[',i,',',j,']=');
readln(x[i,j]);
end;
writeln('matrica y');
for i := 1 to n do
for j := 1 to m do
begin
writeln('y[',i,',',j,']=');
readln(y[i,j]);
end;
for i := 1 to n do
for j := 1 to m do
c[i,j] := x[i,j] + 2*y[i,j];
writeln('izlaz matrica x');
for i := 1 to n do
begin
for j := 1 to m do
writeln(x[i,j]:4);
end;
writeln('izlaz matrica y');
for i := 1 to n do
begin
for j := 1 to m do
writeln(y[i,j]:4);
end;
writeln('izlaz matrica c');
for i := 1 to n do
begin
for j := 1 to m do
writeln(c[i,j]:4);
end;
readln
end.

163. Uitiati dvodimenzionalni niz - matricu nxm.


Izraunati i ispisati sumu svih elemenata niza
A[5,5].
var
i,j, n, m, s : integer;
x : array [1..15,1..15] of integer;
begin
write('n m =');
readln(n,m);
writeln('ulaz niza');
for i := 1 to n do
for j := 1 to m do
begin
write('x[',i,',',j,']=');
readln(x[i,j]);
end;
for i := 1 to n do
begin
writeln;
for j := 1 to m do
writeln(x[i,j]:4);
end;
s := 0;
writeln;
for i := 1 to n do
for j := 1 to m do
s := s + x[i,j];
writeln('suma svih elemenata niza je ', s);
readln
end.

67

PASCAL

164. Uitati dvodimenzionalni niz - matricu nxm.


Prebrojati i ispisati koliko ima elemenata matrice
koju su 1.

165. Uitati dvodimenzionalni niz - matricu nxm.


Izraunati i ispisati aritmetiku sredinu elemenata
niza deljivih sa 2 (parni).

var
i,j, n, m, br : integer;
x : array [1..15,1..15] of integer;
begin
writeln('n m =');
readln(n,m);
writeln('ulaz niza');
for i := 1 to n do
for j := 1 to m do
begin
writeln('x[',i,',',j,']=');
readln(x[i,j]);
end;
for i := 1 to n do
begin
for j := 1 to m do
write(x[i,j]:4);
end;
br := 0;
for i := 1 to n do
for j := 1 to m do
if x[i,j] = 1 then
br := br + 1;
writeln('broj elemenata u matrici jednakih 1 je ',
br);
readln
end.

var
i, j, n, m : integer;
s, br, as : real;
x : array [1..15,1..15] of integer;
begin
s := 0;
br := 0;
writeln('n m =');
readln(n,m);
writeln('ulaz niza');
for i := 1 to n do
for j := 1 to m do
begin
writeln('x[',i,',',j,']=');
readln(x[i,j]);
end;
for i := 1 to n do
begin
for j := 1 to m do
write(x[i,j]:4);
end;
for i := 1 to n do
for j := 1 to m do
if x[i,j] mod 2 = 0 then
begin
s := s + x[i,j];
br := br + 1;
end;
if br > 0 then
begin
as := s/br;
writeln('aritmeticka sredina elemenata deljivih sa
2 ', as);
end
else
writeln('nema elementa deljivih sa 2 ');
readln
end.

68

PASCAL

166. Uitati dvodimenzionalni niz - matricu nxm.


Nadi i ispisati najmanji elemenat matrice X*n,m+.
var
i,j, n, m, min : integer;
x : array [1..15,1..15] of integer;
begin
write('n m =');
readln(n,m);
writeln('ulaz niza');
for i := 1 to n do
for j := 1 to m do
begin
writeln('x[',i,',',j,']=');
readln(x[i,j]);
end;
for i := 1 to n do
begin
writeln;
for j := 1 to m do
writeln(x[i,j]:4);
end;
min := x[1,1];
for i := 1 to n do
for j := 1 to m do
if min > x[i,j] then
min := x[i,j];
writeln('najmanji element matrice =', min);
readln
end.

167. Uitati dvodimenzionalni niz - matricu nxm.


Formirati novi jednodimenzionalni niz ije lanove
ine najmanji lanovi polja po redovima.
var
i,j,n,m: integer;
x:array[1..15,1..15] of integer;
min:array[1..15] of integer;
begin
writeln('unesi dimenzije matrice n, m ');
readln(n,m);
for i:=1 to n do
for j:=1 to m do
begin
writeln('x[',i,',',j,']=');
readln(x[i,j]);
end;
for i:=1 to n do
begin
min[i]:=x[i,1];
for j:=1 to m do
begin
if x[i,j] < min[i] then
min[i]:=x[i,j];
end;
end;
for i:=1 to n do
writeln('najmanji clan ',i,'. reda je ',min[i]);
readln
end.

69

PASCAL

168. Uitati dvodimenzionalni niz X i formirati


drugi dvodimenzionalni niz Y iji je opti lan: y ij =
xji (elementi i-tog reda matrice X se razmenjuju sa
elementima i-te kolone matrice Y). Ispisati oba
niza.
var
i,j, n, m : integer;
x, y, c : array [1..15,1..15] of integer;
begin
writeln('n m =');
readln(n,m);
writeln('matrica x');
for i := 1 to n do
for j := 1 to m do
begin
writeln('x[',i,',',j,']=');
readln(x[i,j]);
end;
writeln('matrica y');
for i := 1 to n do
for j := 1 to m do
y[i,j] := x[i,j];
writeln('izlaz matrica x');
for i := 1 to n do
begin
for j := 1 to m do
writeln(x[i,j]:4);
end;
writeln('izlaz matrica y');
for i := 1 to n do
begin
for j := 1 to m do
writeln(y[i,j]:4);
end;
readln
end.

169. Uitati dvodimenzionalni niz i formirati drugi


iji je opti lan: y ij = -xij (negativne vrednosti
lanova niza). Ispisati oba niza.
var
i,j, n, m : integer;
x, y, c : array [1..15,1..15] of integer;
begin
writeln('n m =');
readln(n,m);
writeln('matrica x');
for i := 1 to n do
for j := 1 to m do
begin
writeln('x[',i,',',j,']=');
readln(x[i,j]);
end;
writeln('matrica y');
for i := 1 to n do
for j := 1 to m do
y[i,j] := -x[i,j];
writeln('izlaz matrica x');
for i := 1 to n do
begin
for j := 1 to m do
writeln(x[i,j]:4);
end;
writeln('izlaz matrica y');
for i := 1 to n do
begin
for j := 1 to m do
writeln (y[i,j]:4);
end;
readln
end.

70

PASCAL

170. Uitati dvodimenzionalni niz i formirati drugi iji je opti lan: yij = xij za i+j parno, inae je yij = 2.
var
i,j, n, m : integer;
x, y, c : array [1..15,1..15] of integer;
begin
writeln('n m =');
readln(n,m);
writeln('matrica x');
for i := 1 to n do
for j := 1 to m do
begin
writeln('x[',i,',',j,']=');
readln(x[i,j]);
end;
writeln('matrica y');
for i := 1 to n do
for j := 1 to m do
if (i+j)=0 then
y[i,j] := x[i,j]
else
y[i,j] :=2;
writeln('izlaz matrica x');
for i := 1 to n do {izlaz}
begin
for j := 1 to m do
writeln(x[i,j]:4);
writeln;
end;
writeln('izlaz matrica y');
for i := 1 to n do
begin
for j := 1 to m do
writeln(y[i,j]:4);
writeln;
end;
readln
end.

71

PASCAL

STRINGOVI

String je sekvenca karaktera. String konstanta moe da ima proizvoljan broj karaktera, ukljuujudi i
string bez karaktera. Broj karaktera u stringu se naziva duina stringa. Jedinstveni string koji ne sadri
karaktere naziva se prazan string.
Stringovi su podrani u svim modernim programskim jezicima. Tipine operacije nad stringovima su:
duina (length);
uporeenje na jednakost (equality comparison);
leksikografsko poreenje (lexicographic comparison);
selekcija karaktera u stringu (character selection);
selekcija podstringa (substring selection);
nadovezivanje (concatenation).

String konstante u Pascalu su niske znakova okrueni apostrofima. Stringovi koji se sastoje od
pojedinanih znakova jesu konstante standardnog tipa Char. Stringovi od N znakova (N>1) jesu
konstante tipa definisanog sa:
packed array [1..N] of Char
Takav tip naziva se tip string. Ispravna je dodela vrednosti A := E gde nizovna promenljiva A i izraz E
imaju bilo koji tip stringa sa istim brojem komponenata. Slino tome, relacioni operatori (= , <>, <, >, <= i
>=) mogu se upotrebiti pri uporeivanju bilo koja dva stringa. Ureenost je odreena redosledom
predeklarisanog tipa Char i podrazumeva da je prvi element (A*1+) najznaajniji u tom poreenju.

72

PASCAL

Primeri zadataka sa stringovima


171. Uitati ispisati niz znakova.
var
i : integer;
s : string;
begin
writeln('unesi string ');
readln(s);
writeln('string = ', s);
readln
end.

172. Uitati niz znakova . Ispisati znak , i redni broj


znaka , na osnovu redosleda unoenja.

173. Uitati niz znakova. Ispisati znak , i redni broj znaka


datog stringa unazad.
var
i : integer;
s : string;
begin
writeln ('unesi string ');
readln(s);
for i := length(s) downto 1 do
writeln(i, '-ti znak = ', s[i]);
readln
end.

174. Svaku re uitanog stringa ispisati u novom redu.

var
i : integer;
s : string;
begin
writeln('unesi string ');
readln(s);
for i := 1 to length(s) do
writeln(i, '-ti znak = ', s[i]);
readln
end.

73

var
i : integer;
s : string;
begin
writeln('unesi string ');
readln(s);
for i := 1 to length(s) do
if ' ' <> s[i] then
writeln(s[i])
else
readln
end.

PASCAL

175. Prebrojati broj velikih slova u uitanom

stringu.

176. Prebrojati broj velikih slova i broj malih slova


u uitanom stringu.

var
i, br : integer;
s : string;
begin
writeln('unesi string ');
readln(s);
br := 0;
for i := 1 to length(s) do
if (('a'<= s[i]) and (s[i] <= 'z')) then
br := br + 1;
writeln('broj velikih slova u stringu ', br);
readln
end.

var
i, brv, brm : integer;
s : string;
begin
writeln('unesi string ');
readln(s);
brv := 0;
brm := 0;
for i := 1 to length(s) do
begin
if (('a'<= s[i]) and (s[i] <= 'z')) then brv := brv + 1;
if (('a'<= s[i]) and (s[i] <= 'z')) then brm := brm + 1;
end;
writeln('broj velikih slova u stringu ', brv);
writeln('broj malih slova u stringu ', brm);
readln
end.

177. Uitati string i odredjeni znak. Ispisati koliko


puta se taj znak pojavljuje u upisanom stringu.

178. Uitati string i prebrojati rei u stringu.


var
i, br : integer;
s : string;
begin
writeln ('unesi string ');
readln(s);
br := 1;
for i := 1 to length(s) do
begin
if ' ' = s[i] then
br := br + 1;
end;
writeln('broj rijeci u stringu = ', br);
readln
end.

var
i, br : integer;
s : string;
z : char;
begin
writeln ('unesi string ');
readln(s);
write('unesi znak ');
readln(z);
br := 0;
for i := 1 to length(s) do
begin
if z = s[i] then
br := br + 1;
end;
writeln('znak = ', z, ' se pojavio ', br, ' puta');
readln
end.

74

PASCAL

179. Uitati string i prebrojati operatore u stringu


(+,-,*,/).

180. Uitati string i prebrojati znake interpunkcije


u stringu (, , . , ? , !).

var
i, br : integer;
s : string;
begin
writeln('unesi string ');
readln(s);
br := 0; {pocetna vrednost brojaca}
for i := 1 to length(s) do
begin
if '+' = s[i] then br := br + 1;
if '-' = s[i] then br := br + 1;
if '*' = s[i] then br := br + 1;
if '/' = s[i] then br := br + 1;
end;
writeln('broj operatora u stringu = ', br);
readln
end.

var
i, br : integer;
s : string;
begin
writeln('unesi string ');
readln(s);
br := 0;
for i := 1 to length(s) do
begin
if '.' = s[i] then br := br + 1;
if ',' = s[i] then br := br + 1;
if '?' = s[i] then br := br + 1;
if '!' = s[i] then br := br + 1;
end;
writeln('broj znakova interpunkcije = ', br);
readln
end.

75

You might also like