Professional Documents
Culture Documents
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
PASCAL
(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
PASCAL
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.
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.
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 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):
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;
11
PASCAL
12
PASCAL
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
14
PASCAL
15
PASCAL
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.
16
PASCAL
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
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.
}
{
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
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.
y=
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
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:
21
PASCAL
broja.
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.
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
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
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 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
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.
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
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.
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
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.
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.
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
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
)(
)(
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.
)(
)(
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.
33
PASCAL
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
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
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:
(
) (
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.
37
PASCAL
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.
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
40
PASCAL
41
PASCAL
42
PASCAL
43
PASCAL
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
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
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.
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
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
50
PASCAL
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
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
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
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.
56
PASCAL
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
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
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
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
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
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
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
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
66
PASCAL
67
PASCAL
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
69
PASCAL
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
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
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.
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
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