pascal zadaci

41
Čas 1/3 Nastavna jedinica: Programi sa prostom linijskom strukturom, Grananja u programu (naredba uslovnog prelaska IF...THEN...ELSE i naredba višestrukog grananja CASE...OF) Zadatak 1. Napisati program kojim se za dati poluprečnik izračunava obim i površina kruga. Program poluprecnik; Const pi=3.14; Var r:integer; P,O: real; Begin Writeln('Unesite poluprecnik'); Readln(r); P := sqr(r) * pi; O := 2 * r * pi; Writeln('Obim je ',O : 2 : 3,' a povrsina je ', P : 2 : 5); Readln End. Zadatak 2. Napisati program kojim se unose nazivi dve robe i njihove cene, izračunava račun koji treba da se plati uvećan za pdv – 18%. Program racuni; Const pdv=0.18; Var cena, racun: real; roba:string[15]; Begin Writeln('Unesite naziv prve robe i njenu cenu'); Readln(roba, cena); racun := racun + cena; Writeln('Unesite naziv druge robe i njenu cenu'); Readln(roba, cena); racun := racun + cena; racun := racun + racun * pdv; Writeln('Vas racun je ', racun : 4 : 2); Readln End.

Upload: milicapasic

Post on 05-Dec-2015

88 views

Category:

Documents


9 download

DESCRIPTION

kjkjkjk

TRANSCRIPT

Čas 1/3 Nastavna jedinica: Programi sa prostom linijskom strukturom, Grananja u programu

(naredba uslovnog prelaska IF...THEN...ELSE i naredba višestrukog grananja

CASE...OF)

Zadatak 1. Napisati program kojim se za dati poluprečnik izračunava obim i površina kruga.

Program poluprecnik;

Const pi=3.14;

Var r:integer;

P,O: real;

Begin Writeln('Unesite poluprecnik');

Readln(r);

P := sqr(r) * pi;

O := 2 * r * pi;

Writeln('Obim je ',O : 2 : 3,' a povrsina je ', P : 2 : 5);

Readln End.

Zadatak 2. Napisati program kojim se unose nazivi dve robe i njihove cene, izračunava račun

koji treba da se plati uvećan za pdv – 18%.

Program racuni;

Const pdv=0.18;

Var cena, racun: real;

roba:string[15];

Begin Writeln('Unesite naziv prve robe i njenu cenu');

Readln(roba, cena);

racun := racun + cena;

Writeln('Unesite naziv druge robe i njenu cenu');

Readln(roba, cena);

racun := racun + cena;

racun := racun + racun * pdv;

Writeln('Vas racun je ', racun : 4 : 2);

Readln End.

Zadatak 3. Napisati program kojim se za dato x izračunava y.

a)

0 xza 3x,

0 xza ,12x=y b) y =

-1, za x < 0

0, za x = 0

1, za x > 0

Program prvi; Program prvi;

Var x, y: real; Var x, y: real;

Begin Begin Writeln (’Unestite vrednost za x’); Writeln (’Unestite vrednost za x’);

Readln (x); Readln (x);

If x > 0 Then If x > 0 Then

y:= 2*x+1 y:=1

Else Else y:=3*x; If x = 0 Then y:=0 Else y:=-1;

Writeln (y); Writeln (y);

Readln Readln End. End.

Zadatak 4. Napisati program kojim se za dato x i y izračunava z po formuli:

0 ,,max

0 ,,min

22 yyx

yyxz

Program max;

Var x,y,z:integer;

Begin

Writeln ('Unesi dva broja: ');

Readln (x,y);

If y<0 Then

If sqr(x)<sqr(y) Then z:=sqr(y) Else z:=sqr(x);

Else If x<y Then z:=x Else z:=y;

Writeln ('Z = ',z);

Readln;

End.

Zadatak 5. Napisati program kojim se ispituje da li se prave Y = AX + B i Y = CX + D seku.

Ako se seku odrediti koordinate preseka.

Program seku;

Var a,b,c,d,x,y:real;

Begin

Writeln('Unesite vrednosti za a,b,c,d');

Readln(a,b,c,d);

If a-c <> 0 Then

Begin x:=(d-b)/(a-c);

y:=a*x+b;

Writeln('x je: ',x,'a y: ',y);

End

Else Writeln('Greska');

Readln End.

Zadatak 6. Napisati program kojim se promenljivoj max dodeljuje najveća vrednost tri zadata

broja a,b,c.

Program max3;

Var a,b,c,max:integer;

Begin Writeln ('Unesi tri broja: ');

Readln (a,b,c);

max:=a;

If max<b Then max:=b;

If max<c Then max:=c;

Writeln ('Max = ',max);

Readln;

End.

Zadatak 7. Napisati program kojim se za uneti redni broj meseca ispisuje koliko ima dana u tom

mesecu.

Program dani;

Var mesec:integer;

prestupna:char;

Begin

Writeln('Unesi broj meseca od 1 do 12: ');

Readln(mesec);

If (mesec<1) Or (mesec>12) Then

Writeln('Broj meseca je nekorektan')

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 dan')

Else

Writeln ('28 dan');

End; End;

Readln;

End.

Zadatak 8. Napisati program kojim se učitava znak za operaciju (+, -, *, /) i dve realne

promenljive, a zatim štampa rezultat.

Program seku;

Var a,b,x:real;

znak:char;

Begin

Writeln('Unesite vrednosti za a,b i znak za operaciju');

Readln(a,b);

Readln(znak);

Case znak Of

'+':x:=a+b;

'-':x:=a-b;

'*':x:=a*b;

'/':If b<>0 Then x:=a/b Else Writeln ('greska');

End;

Writeln('x je: ',x);

Readln End.

Zadaci za vežbu

Zadatak 9. Napisati program kojim se za različite vrednosti x i y izračunava z po formuli:

2)y,xmax(1

5.0)y,xmin(z

Program zpoformuli;

Var x, y, z : real;

Begin Writeln('Unesi dva broja: ');

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);

Readln;

End.

Zadatak 10. Nacrtati algoritam kojim se za uneti redni broj ispisuje koji je to dan u nedelji.

Program racuni;

Var dan:integer;

Begin Writeln ('Unesite broj od jedan do sedam');

Readln(dan);

Case dan Of

1: Writeln('Taj dan je ponedeljak');

2: Writeln('Taj dan je utorak');

3: Writeln('Taj dan je sreda');

4: Writeln('Taj dan je cetvrtak');

5: Writeln('Taj dan je petak');

6: Writeln('Taj dan je subota');

7: Writeln('Taj dan je nedelja');

Else Writeln('Taj dan nepostoji');

End;

Readln End.

Zadatak 11. Nacrtati algoritam kojim se ispisuju moguće vrednosti koordinata x i y zavisno od

broja kvadranta koji se unosi.

Program racuni;

Var kvad:integer;

Begin Writeln ('Unesite broj kvadranta');

Readln(kvad);

Case kvad Of

1: Writeln('x > 0, y > 0');

2: Writeln('x > 0, y < 0');

3: Writeln('x < 0, y < 0');

4: Writeln('x > 0, y > 0');

Else Writeln('Taj kvadrant nepostoji');

End;

Readln End.

Čas 4/6

Nastavna jedinica: Naredba ciklusa sa parametrom FOR; Naredba ciklusa sa

preduslovom – WHILE i naredba ciklusa sa postuslovom – REPEAT

Naredba ciklusa sa parametrom FOR

Zadatak 1. Napisati program koji za dato N izračunava sumu:N

S1

...3

1

2

11 .

Program suma;

Var i, n:integer;

s:real;

Begin

Readln (n);

For i:= 1 To n Do

s := s + 1/i;

Writeln (s);

Readln

End.

Zadatak 2. Napisati program kojim se za dato N izračunava suma: 1

...4

3

3

2

2

1

N

NS

Program suma;

Var i, n:integer;

s:real;

Begin

Readln (n);

For i:= 1 To n Do

s := s + i/(i+1);

Writeln (s);

Readln

End.

Zadatak 3. Napisati program kojim se, za date brojeve m i n , izračunava:

)mm)1(n)...(m3n)(m2n)(mn(S 1m

Program suma;

Var i, n, m, z:integer;

s:real;

Begin

Readln (n, m);

z := 1;

For i:= 1 To m Do

Begin

s:= s+ (n + z * i * m);

z := – z;

End; Writeln (s);

Readln

End.

Zadatak 4. Napisati program kojim se za dato n, izračunava suma S=1!+2!+3!+..+n!

Program Suma;

Var i,fakt,s,n:integer;

Begin Writeln ('Ucitaj n: ');

Readln (n);

s:=0;

fakt:=1;

For i:= 1 To n Do

Begin

fakt:=fakt*i;

s:=s+fakt;

End;

Writeln ('S =',s:10);

Readln;

End.

Zadatak 5. Napisati program kojim se određuje da li je iskazna formula Y*XYX

tautologija.

Program tautologija;

Var x,y,p,q,c:boolean;

k: integer;

Begin

For x:=false To true Do

For y:= false To true Do

Begin p:= Not(x Or y);

q:= Not(x) Or Not(y);

c:= Not(p) Or q And p Or Not(q);

If c = true Then k:=k+1;

End;

If k = 4 Then Writeln('jeste') Else Writeln('nije');

Readln End.

Naredba ciklusa sa preduslovom – WHILE i naredba ciklusa sa postuslovom – REPEAT

Zadatak 6. Napisati program za izračunavanje sume onih elemenata niza

n

i+ncos ,

i=1,2,3...,n, čija vrednost pripada odsečku (a,b).

WHILE REPEAT

Program suma;

Var i,n:integer;

a,b,s,p:real;

Begin Writeln ('Unesi n: ');

Readln (n);

Writeln ('Unesi a i b: ');

Readln (a,b);

s:=0; i:=1;

While i<=n Do

Begin p:=cos(n+i/n);

If (a<=p) And (p<=b) Then

s:=s+p;

i:=i+1;

End; Writeln ('Suma je ',s:10:2);

Readln;

End.

Program suma;

Var i,n:integer;

a,b,s,p:real;

Begin Writeln ('Unesi n: ');

Readln (n);

Writeln ('Unesi a i b: ');

Readln (a,b);

s:=0; i:=1;

Repeat p:=cos(n+i/n);

If (a<=p) And (p<=b) Then

s:=s+p;

i:=i+1;

Until i > n;

Writeln ('Suma je ',s:10:2);

Readln;

End

Zadatak 7. Napisati program za približno računanje sume !

)1(...!2!1

12

n

xxxS

nn ...

Sumirati do člana (uključujući i njega) koji je po apsolutnoj vrednosti manji od zadatog broja

eps.

WHILE REPEAT

Program suma;

Var x,clan,s,eps:real;

i, a:integer;

Begin Writeln ('Unesi x,a,eps '); Readln

(x,a,eps);

s:=1.0; i:=0; clan:=1.0;

While abs(clan)>=eps Do

Begin i:=i+1;

clan:=clan*(a-i+1)*x/i;

s:=s+clan;

End;

Program suma;

Var x,clan,s,eps:real;

i, a:integer;

Begin Writeln ('Unesi x,a,eps ');

Readln (x,a,eps);

s:=1.0; i:=0; clan:=1.0;

Repeat i:=i+1;

clan:=clan*(a-i+1)*x/i;

s:=s+clan;

Until abs(clan) < eps;

Writeln ('Suma je ',s:10:2);

Writeln ('Suma je ',s:10:2);

Readln;

End.

Readln;

End.

Zadatak 8. Napisati program kojim se određuju prvi elementi nizova

i

1...

7

1

6

1iA

i

i

2

i

22 i

1...

7

1

6

1iB

takvi da je A(i) > B(i) – 0.05, ako i = 6, 7, 8, ...

WHILE REPEAT

Program dvaniza;

Var a,b:real;

i,z:integer;

Begin

i:=6; z:=1;

While a < (b-0.05) Do

Begin a:=a+z/i;

b:=b+z/sqr(i);

i:=i+1;

End;

Writeln (a,b);

Readln End.

Program dvaniza;

Var a,b:real;

i,z:integer;

Begin

i:=6; z:=1;

Repeat a:=a+z/i;

b:=b+z/sqr(i);

i:=i+1;

Until a > (b-0.05);

Writeln (a,b);

Readln End.

Zadatak 9. Napisati program koji štampa prvih deset članova niza koji su veći od 1. Niz je dat

rekurentno:

A(1) = 1/3,

A(2) = 2/3,

2*1

21

kAkA

kAkAkA

WHILE REPEAT

Program niz;

Var i:integer;

x,y,z:real;

Begin

i:=1; x:=1/3; y:=2/3; z:=(x+y)/(x*y);

While i <11 Do

Begin i:=i+1;

If z >1 Then

Begin Writeln (z);

x:=y;

Program niz;

Var i:integer;

x,y,z:real;

Begin

i:=1; x:=1/3; y:=2/3; z:=(x+y)/(x*y);

Repeat i:=i+1;

If z >1 Then

Begin Writeln (z);

x:=y;

y:=z;

y:=z;

z:=(x+y)/(x*y);

End;

End;

Readln End.

z:=(x+y)/(x*y);

End;

Until i > 11;

Readln End.

Zadatak 10. Sastaviti program za nalaženje najvećeg zajedničkog delioca za dva prirodna broja.

WHILE REPEAT

Program nzd;

Var a,b,kol,pom:integer;

Begin

Writeln('Unesite dva prirodna broja');

While (a <= 0) Or (b <= 0) Do

Readln(a,b);

If a < b Then

Begin pom := a; a := b; b:= pom;

End;

kol := a mod b;

While kol <> 0 Do

Begin kol := a mod b;

a := b;

b := kol;

End;

Writeln ('Najveci zajednicki delilac je ',a);

Readln

End.

Program nzd;

Var a,b,kol:integer;

Begin

Writeln('Unesite dva prirodna broja');

Repeat Readln(a,b);

Until (a > 0) Or (b > 0);

If a < b Then

Begin pom := a; a := b; b:= pom;

End;

Repeat kol := a mod b;

a := b;

b := kol;

Until kol = 0;

Writeln ('Najveci zajednicki delilac je ',a);

Readln

End.

Zadaci za vežbu

Zadatak 11. Napisati program kojim se za uneti datum određuje koji je to redni broj dana u

godini. Godina nije prestupna.

Program RedniBrojDana;

Var dan,mesec,d,m:integer;

Begin Writeln ('Unesi dan i mesec ');

Readln (dan,mesec);

d:=dan;

For m:=1 to mesec-1 Do

Case m Of

1,3,5,7,8,10,12: d:=d+31;

4,6,9,11:d:=d+30;

2: d:=d+28;

End;

Writeln ('Redni broj dana je: ',d);

Readln;

End.

Zadatak 12. Za date brojeve a i b naći njihov najmanji zajednički sadržalac.

WHILE REPEAT

Program nzs;

Var a, b, nzs2, k: integer;

Begin Writeln('Unesite dva prirodna broja');

While (a <= 0) Or (b <= 0) Do

Readln(a,b);

k := 2;

nzs2 := 1;

If a mod b = 0 Then

nzs2 := a

Else

While (a <> 1) Or (b <> 1) Do

Begin While (a mod k = 0) Or (b mod k = 0)

Do

Begin If a mod k = 0 Then a := a div k;

If b mod k = 0 Then b := b div k;

nzs2 := nzs2 * k;

End;

k := k+1;

End;

Writeln ('Najmanji zajednicki sadrzalac je

',nzs2);

Readln

End.

Program nzs;

Var a, b, nzs2, k: integer;

Begin Writeln('Unesite dva prirodna broja');

While (a <= 0) Or (b <= 0) Do

Readln(a,b);

k := 2;

nzs2 := 1;

If a mod b = 0 Then

nzs2 := a

Else

Repeat

Repeat If (a mod k = 0) Or (b mod k = 0) Then

Begin If a mod k = 0 Then a := a div k;

If b mod k = 0 Then b := b div k;

nzs2 := nzs2 * k;

End;

Until (a mod k<>0) And (b mod k <>

0);

k := k+1;

Until (a = 1) And (b = 1);

Writeln ('Najmanji zajednicki sadrzalac je

',nzs2);

Readln End.

Zadatak 13. Napisati program kojim se za dati niz: ...*1

11*...*

3

11*

2

11

iai

određuje prvi element an koji zadovoljava uslov: an – an – 1 < eps. Broj eps je prozvoljan.

WHILE REPEAT

Program Proizvod;

Var i,a0,a1,eps:real;

Begin

Program Proizvod;

Var i,a0,a1,eps:real;

Begin

Writeln ('Unesi eps: ');

Readln (eps);

i:=2;

a1:=0.5;

While abs(a1-a0) >= eps Do

Begin a0:=a1;

i:=i+1;

a1:=a0*(1-1/i)

End;

Writeln (a1:10:5);

Readln;

End.

Writeln ('Unesi eps: ');

Readln (eps);

i:=2;

a1:=0.5;

Repeat a0:=a1;

i:=i+1;

a1:=a0*(1-1/i)

Until abs(a1-a0)<eps;

Writeln (a1:10:5);

Readln;

End.

Čas 7/9

Nastavna jedinica: Funkcije i procedure

Zadatak 1. Napisati program kojim se računa suma S = 1! + 2! + 3! + . . . + n!

Program suma;

Var i,n,s:integer;

Function fakt(x:integer):integer;

Var p,j:integer;

Begin p:=1;

For j:=1 to x Do

p:=p*j;

fakt:=p;

End;

Begin Writeln('Unesite vrednosti za n');

Readln(n);

For i:=1 To n Do

s:=s+fakt(i);

Writeln('s je: ',s);

Readln End.

Zadatak 2. Napisati program kojim se štampaju svi trocifreni brojevi koji su jednaki sumi

faktorijela svojih cifara.

Program suma;

Var a,b,c,x,y:integer;

Function fakt(n:integer):integer;

Var i,p:integer;

Begin p:=1;

For i:=1 To n Do p:=p*i;

End;

fakt:=p;

End;

Begin

For a:=1 To 9 Do

For b:=0 To 9 Do

For c:=0 To 9 Do

Begin x:= a*100 + b*10 +c;

y:= fakt(a) +fakt(b) +fakt(c);

If x=y Then Writeln(a,b,c);

End;

Readln;

End.

Zadatak 3. Izračunaj sumu računajući do člana koji je po apsolutnoj vrednosti manji od eps.

S 11

2

1

3

1

4!! !! !!.... pri čemu je dfact n n

n n n je neparan

n n n je paran( ) !!

( ).. ,

( ).. * ,

2 3

2 4 2

Program suma1;

Var a:integer;

s,eps:real;

Function fakt(n:integer):integer;

Var i,p,k:integer;

Begin p:=1;

If n mod 2 = 0 Then i:=2 Else i:=1;

k:=i;

Repeat p:=p*k;

k:=k+2;

Until k>n;

fakt:=p;

End;

Begin

Writeln ('Unesite eps'); Readln (eps);

s:=1; a:=2;

Repeat If a mod 2 = 0 Then s:=s + 1/fakt(a) Else s:=s - 1/fakt(a);

a:=a+1;

Until abs(1/fakt(a)) < eps;

Writeln (s:3:4);

Readln;

End.

Zadatak 4. Napisati program koji koristeći funkciju prost štampa sve proste brojeve do datog

prirodnog broja n.

Program nizprost;

Const n1 = 100;

Var prost1:boolean;

i,n,m,j,koren:integer;

Function prost(n:integer):boolean;

Begin

koren := round(sqrt(n));

prost1 := odd(n) Or (n=2); i := 3;

While (prost1) And (i <= koren) Do

Begin prost1 := n mod i<>0;

i := i + 2

End;

If prost1 Then Writeln(n:3)

End;

Begin Writeln('upisi broj clanova niza');

Readln(m);

Writeln('prosti brojevi su');

For n := 1 to m Do prost(n);

Readln;

End.

Zadatak 5. Sastaviti proceduru koja određuje maksimum mx i minimum mn tri zadata broja a, b,

i c korišćenjem opisa funkcija minimuma i maksimuma dva broja min i max.

Program minmax;

Var a,b,c,mn,mx:integer;

Function min(x,y:integer):integer;

Begin If x>y Then min:=y Else min:=x;

End;

Function max(x,y:integer):integer;

Begin If x>y Then max:=x Else max:=y;

End;

Procedure minmax1(x,y,z:integer;var mn,mx:integer);

Begin mn:=min(min(x,y),z);

mx=max(max(x,y),z);

End;

Begin Writeln('Unesite tri broja');

Readln(a,b,c);

minmax1(a,b,c,mn,mx);

Writeln('Najveci broj je ', mx,' a najmanji je ', mn);

Readln End.

Zadatak 6. Napisati program koji, korišćenjem procedure razmeni, četiri različita broja a,b,c,d

uređuje testerasto: a<b>c<d

Program cetiribroja;

Var a,b,c,d:integer;

Procedure razmeni(var a,b:integer);

Var pom:integer;

Begin If a>b Then

Begin pom := a; a := b; b := pom;

End;

End;

Begin Writeln('Unesite cetiri broja');

Readln(a,b,c,d);

Repeat razmeni(a,b);

razmeni(c,b);

razmeni(c,d);

Until (a<b) And (b>c) And (c<d);

Writeln(a:6,b:6,c:6,d:6);

Readln;

End.

Čas 10/12

Nastavna jedinica: Rekurzivne funkcije i procedure

Zadatak 1. Napisati rekurzivnu funkciju za izračunavanje sume prvih n prirodnih brojeva:

1+2+3+...+n

Program rekuzivna1;

Function suma(k:integer):integer;

Begin

If k=0 Then suma:=0 Else suma:=k+suma(k-1);

End;

Var i,n,s:integer;

Begin

Writeln('Unesite broj n');

Readln(n);

s:=suma(n);

Writeln(s);

Readln;

End.

Zadatak 2. Napisati rekurzivnu funkciju za izračunavanje faktorijela broja n.

Program rekurzivna2;

Function fakt(n:integer):integer;

Begin

If n = 0 Then fakt:=1 Else fakt:=n * fakt(n-1);

End;

Var n,p:integer;

Begin

Writeln('Unesite broj n');

Readln(n);

p:=fakt(n);

Writeln(p); Readln;

End.

Zadatak 3. Napisati rekurzivnu funkciju za izračunavanje n-tog člana Fibonačijevog niza: f1=1,

f2=1, fi=fi-1 +fi-2, i=3,4,...

Program fibonaci;

Function fib(n:integer):integer;

Begin If (n=1) or (n=2) Then fib:=1 Else fib:= fib(n-1) + fib(n-2);

End;

Var i,fibon:integer;

Begin Writeln('Unesite i');

Readln(i);

fibon:=fib(i);

Writeln(fibon); Readln;

End.

Zadatak 4. Izračunati sumu S niza S = 3! - 6! + 9! - 12!…n!, faktorijel računati preko rekurzivne

funkcije.

Program suma;

Function fakt(x:integer):integer;

Begin

If x = 0 Then fakt:=1 Else fakt:=x * fakt(x-1);

End;

Var i,n,z,s:integer;

Begin

Writeln('Unesite broj n');

Readln(n);

i:=3;

z:=1;

While i<= n Do

Begin s:=s+z*fakt(i);

i:=i+3;

z:=-z;

End;

Writeln(s); Readln;

End.

Zadatak 5. Izračunati varijacije bez ponavljanja K – te klase od N elemenata pri čemu je kn a

varijacije su: V=n(n-1)(n-2)…(n-k+1)=)!(

!

kn

n

Program rekurzivna2;

Function fakt(x:integer):integer;

Begin

If x = 0 Then fakt:=1 Else fakt:=x * fakt(x-1);

End;

Var n,k:integer;

V:real;

Begin

Writeln('Unesite broj n i k');

Readln(n,k);

V:=fakt(n)/fakt(n-k);

Writeln(V:5:1); Readln;

End.

Zadatak 6. Pronaći sumu. Prekinuti izvršenje kada tekući član postane po apsolutnoj vrednosti

veći od EPS.

...

!2)1(...

!6!4!21)cos(

2642

k

xxxxx

kk

Zadatak 7. Banka na početku svake godine ulagačima obračunava kamatu sa P procenata na

novčanu sumu koja je odležala u toku prethodne godine. Napisati program kojim se uz

korišćenje rekurzivne funkcije KAMATA, izračunava novčani iznos kojim će ulagač raspolagati

posle G godina, ako je početno ulaganje S.

Zadatak 8. Izračunaj S po formuli

112

!K110

!K

...

!K4

!K2

!KAS

Zadatak 9. Za dato n izračunati

1

1...

3

1

2

1

!...

3

1

2

1

!2

2

1

!1

n

nS

Čas 13/15

Nastavna jedinica: Nestandardni prosti tipovi podataka (nabrojiv tip, intervalni tip)

Nastavna jedinica: Tip string i operacije nad stringovima

Nabrojiv tip

Nabrojiv tip sse definiše kao uređen skup nabrojanih imena, koja predstavljaju

konstante tipa. Imena komponenti se odvajaju jedna od druge zapetom, a skup komponentni koje

čine dati tip se stavlja između zagrada. Ista konstanta se ne može pojaviti u dve ili više type

definicija. Piše se:

Type dani = (ponedeljak, utorak, sreda, četvrtak, petak, subota, nedelja);

Var dan: dani;

a to je ekvivalentno sa:

Var dan: (ponedeljak, utorak, sreda, četvrtak, petak, subota, nedelja);

Promenljivoj može biti dodeljena bilo koja vrednost specificirana u definiciji tipa kome

pripada. Promenljive nabrojivog tipa ne mogu biti parametri naredbi ulaza Read i Readln, nao ni

naredbi izlaza Write i Writeln.

Zadatak 1. Napisati program kojim se ispisuju pravila saobraćajnog kretanja koja pokazuje

semafor.

Program semafor;

Type boje=(crveno, zuto, zeleno);

Var boja: boje;

Begin For boja:= crveno to zeleno Do

Case boja of

crveno: Writeln('Zabranjeno prelazenje');

zuto: Writeln('Pripremi se za prelazenje');

zeleno: Writeln('Slobodno predji');

End;

Readln End.

Zadatak 2. Napisat program kojim se ispisuje da li je radni dan ili ne i koji je to dan.

Program koji_je_to_dan;

Type dani = (ponedeljak, utorak, sreda, četvrtak, petak, subota, nedelja);

Var dan:dani;

Begin

For dan:= ponedeljak To nedelja Do

Case dan of

ponedeljak: Writeln('Ponedeljak je radni dan');

utorak: Writeln('Utorak je radni dan');

sreda: Writeln('Sreda je radni dan');

četvrtak: Writeln('Četvrtak je radni dan');

petak: Writeln('Petak je radni dan');

subota: Writeln('Subota je radni dan');

nedelja: Writeln('Nedelja je radni dan');

End;

Readln End.

Intervalni tip

Odsečak bilo kog prostog tipa, izuzev real, može definisati intervalni tip. Odsečak se

zadaje intervalom od najmanje do najveće vrednosti, razdvojenih sa dve tačke. Pri tom prva

konstanta zadaje najmanju vrednost, koja mora biti manja ili jednaka najvećoj vrednosti, koja je

zadata drugom konstantom. Prosti tip od kog se gradi intervalni tip naziva se bazni tip. Piše se:

Type godisnjedoba = (prolece, leto, jesen, zima);

sezona = prolece..jesen;

temperatura = - 30 .. 30;

znak = ‘A’.. ‘Z’

cifra = 0..9

Var period:sezona;

t1, t2, t3: temperatura;

slovo1, slovo2: znak;

broj: cifra;

a to je ekvivalentno sa:

Var period : prolece..jesen;

t1, t2, t3: - 30 .. 30;

slovo1, slovo2: ‘A’.. ‘Z’

broj: 0..9;

Zadatak 3. Napisati program kojim se na osnovu datuma u intervalu od 1980 do 1990 godine

određuje datum sledećeg dana.

Program datum;

Var god:1980..1990;..

mesec:1..12;

dan:1..31;

Begin Writeln('Unesite dan, mesec i godinu');

Readln(dan,mesec,god);

Case mesec of

1,3,5,7,8,10,12:

Begin If dan<31 Then

dan:=dan+1

Else If mesec < 12 Then

Begin mesec:=mesec + 1;

dan:=1;

End

Else

Begin god:=god+1;

mesec:=1;

dan:=1;

End;

End;

4,6,9,11:

If dan<30 Then

dan:=dan+1

Else

Begin mesec:=mesec + 1;

dan:=1;

End;

2:

If dan<28 Then

dan:=dan+1

Else If god mod 4 = 0 Then

dan:=dan+1

Else

Begin mesec:=mesec+1;

dan:=1

End;

End;

Writeln('Novi datum je ',dan, '.' ,mesec, '.', god,'godine');

Readln

End.

Nastavna jedinica: Tip string i operacije nad stringovima

Deklaracija VAR kolac: STRING[10] – 10 je maksimalna dužina stringa tj. reči kolac

Određivanje dužine: LENGTH(kolac)

Učitavanje vrednosti promenljive tipa string mora da se radi sa naredbom READLN

Funkcijom concat(s1, s2, s3,…) formira se novi string nadovezivanjem više stringova koji su

argumenti funkcije. (concat(‘12’, ‘ 34’, ‘56’) daje ‘123456’

Funkcija pos(s1,s2), ispituje da li se string s1 sadrži u stringu s2. Ako je to tačno, pos daje ceo

broj koji označava poziciju prvog pojavljivanja idući s leve stranes1 u s2. U protivnom daje 0.

pos('gram', 'programiranje') daje 4

Funkcija copy(s, p, d) daje novi string formiran kopiranjem d znakova stringa s počev od

pozicije p.

Ako želimo da ispišemo prva tri znaka stringa dan, treba napisati writeln(copy(dan, 1, 3))

Procedura delete(s, p, d) uklanja podstring od s počev od pozicije p na dužini d.

Na primer dan:='ponedeljak'

delete(dan,5,3) Dobiće se ´ponejak´

Procedura insert(s1, s2, p) umeće string s1 u string s2 počev od pozicije p.

Zadatak 4. Napisati program kojim se reči sa ulaznog teksta ispisuju u inverznom poretku. Reči

su međusobno razdvojene prazninama.

Program proba;

Var blanko: integer;

rec, novarec:string[50];

Begin Writeln('unesite rec');

Readln(rec);

novarec:=' ';

rec:=Concat(rec,' ');

While rec <> '' Do

Begin blanko:=Pos(' ',rec);

novarec:=Copy(rec,1,blanko)+novarec;

Delete(rec,1,blanko);

End;

Writeln('inverzan red je');

Writeln(novarec);

Readln End.

Čas 16/18

Nastavna jedinica: Jednodimenzionalni nizovi

Zadatak 1. Napisati program kojim, se za dato n, izračunava suma pozitivnih elemenata niza

a[1], a[2],...a[n].

Program sumapoz;

Var x:array [1..100] of integer;

i,n,suma:integer;

Begin Writeln('Unesite dimenziju niza'); Readln(n);

Writeln('Unesite clanove tog niza');

For i:=1 To n Do

Begin Write('a(',i,')= ');

Readln(x[i]);

If x[i] > 0 Then suma:=suma + x[i];

End;

Writeln('Zuma pozitivnih clanova je ',suma);

Readln

End.

Zadatak 2. U datom nizu a[1], a[2],...a[n] promeniti znak svim elementima sa parnim

indeksima.

Program indeksi;

Var a:array [1..100] of integer;

i,n:integer;

Begin

Writeln('Unesite dimenziju niza'); Readln(n);

Writeln('Unesite clanove tog niza');

For i:=1 To n Do

Begin Write('a(',i,')= ');

Readln(a[i]);

If i mod 2 = 0 Then a[i]:= - a[i];

End;

Writeln('Niz sa promenjenim znacima je');

For i:=1 To n Do

Writeln('a(',i,')= ',a[i]);

Readln

End.

Zadatak 3. Odrediti indeks i vrednost prvog člana u nizu koji je najbliži srednjoj vrednosti niza.

Program clanniza;

Var i,n,k,s,clan:integer;

as,raz:real; a: array[1..100] of integer;

Begin

Writeln('Upisi broj clanova niza'); Readln(n);

For i := 1 To n Do

Begin Write('a[',i:2,']= '); Readln(a[i]);

s := s + a[i];

End;

as := s / n;

clan := a[1];

raz:= abs( as - a[1] );

For i:= 2 To n Do

If raz > abs( as - a[i] ) Then

Begin raz := abs( as - a[i] );

clan := a[i];

k:=i;

End;

Writeln('Najblizi element niza aritmetickoj sredini je ',clan);

Writeln(' a njegov indeks je ',k);

Readln End.

Zadatak 4. Odrediti najveći element niza x.

Program najveci;

Var x:array [1..100] of integer;

i,n,max:integer;

Begin

Writeln('Unesite dimenziju niza'); Readln(n);

max:=-100;

Writeln('Unesite clanove tog niza');

For i:=1 To n Do

Begin Write('a(',i,')= ');

Readln(x[i]);

If max < x[i] Then max:=x[i];

End;

Writeln('Najveci element niza je ',max);

Readln End.

Zadatak 5. Napisati program kojim se određuje broj različitih elemenata niza a[1], a[2],...a[n].

Program razliciti;

Var a:array [1..100] of integer;

i,j,n,k,br:integer;

Begin

Writeln('Unesite dimenziju niza'); Readln(n);

Writeln('Unesite clanove tog niza');

For i:=1 To n Do

Begin Write('a(',i,')= '); Readln(a[i]);

End;

br:=1;

For i:=2 To n Do

Begin k:=0;

For j:=1 To i-1 Do If a[i] = a[j] Then k:=1;;

If k=0 Then br:=br+1;

End;

Writeln('Broj razlicitih elemenata je ',br);

Readln End.

Zadatak 6. Napisati program kojim se realizuje ciklično pomeranje vrednosti elemenata a(1),

a(2), a(3),...a(n) niza za jedno mesto u levo.

Program Pomeraj;

Var a:array [1..100] of real;

pom:real; n,i:integer;

Begin

Write('Unesi broj elemenata niza '); Readln(n);

Writeln('Unesi niz a[i] ');

For i:=1 To n Do readln(a[i]);

pom:=a[1];

For i:=2 To n Do a[i-1]:=a[i];

a[n]:=pom;

For i:=1 To n Do Writeln(a[i]:5:0);

Readln End.

Čas 19/21

Nastavna jedinica: Dvodimenzionalni nizovi

Zadatak 1. Napisati programe kojim se za matricu A(NxN) izračunava:

a) suma svih elemenata;

b) suma dijagonalnih elemenata, tj. suma elemenata sa jednakim indeksima

c) vrednost najvećeg elementa na sporednoj dijagonali;

d) suma elemenata ispod glavne digagonale

e) suma negativnih elemenata matrice.

a)

Program sumasvih;

Uses Crt;

Type mat = array [1..100,1..100] of integer;

Var a:mat;

i,j,n:integer;

s:real;

Procedure unos( var a:mat);

Begin

Writeln('Unesite dimenziju niza');

Readln(n);

Writeln('Unesite clanove tog niza');

For i:=1 to n Do

For j:=1 To n Do

Begin Write('a(',i,',',j,')= ');

Readln(a[i,j]);

End;

End;

Procedure suma(var a:mat; var s:real);

Begin

For i:=1 to n Do

Begin For j:=1 to n Do

s:= s + a[i,j];

End;

End;

Begin

Clrscr;

unos(a);

suma(a,s);

Writeln('Suma svih clanova matrice je S = ', s :2:3);

Readln ;

End.

b)

Program sumasvih;

uses crt;

type mat=array [1..100,1..100] of integer;

var a:mat;

i,j,n:integer;

s:real;

procedure unos( var a:mat);

Begin

writeln('Unesite dimenziju niza');

readln(n);

writeln('Unesite clanove tog niza');

for i:=1 to n Do

for j:=1 to n Do

Begin

write('a(',i,',',j,')= ');

readln(a[i,j]);

end;

end;

procedure suma(var a:mat; var S:real);

Begin for i:=1 to n Do

for j:=1 to n Do

if i=j then s:= s + a[i,j];

end;

Begin clrscr;

unos(a);

suma(a,s);

writeln('Suma dijagonalnih elemenata je S = ', s :2:3);

readln

end.

c)

Program najveci;

uses crt;

type mat=array [1..100,1..100] of integer;

var a:mat;

i,j,n,max:integer;

procedure unos(var a:mat);

Begin writeln('Unesite dimenziju niza');

readln(n);

writeln('Unesite clanove tog niza');

for i:=1 to n Do

for j:=1 to n Do

Begin write('a(',i,',',j,')= ');readln(a[i,j]);

end;

end;

procedure maxi(var a:mat; var max:integer);

Begin for i:=1 to n Do

for j:=1 to n Do

if i+j = n + 1 then max:= a[i,j];

end;

Begin clrscr;

unos(a); maxi(a,max);

writeln('Najveci element na sporednoj dijaognali je ', max);

readln ;

end.

d)

Program najveci;

uses crt;

type mat=array [1..100,1..100] of integer;

var a:mat;

i,j,n,s:integer;

procedure unos( var a:mat);

Begin writeln('Unesite dimenziju niza');

readln(n);

writeln('Unesite clanove tog niza');

for i:=1 to n Do

for j:=1 to n Do

Begin write('a(',i,',',j,')= ');

readln(a[i,j]);

end;

end;

procedure ispod(var a:mat; var s:integer);

Begin for i:=1 to n do

for j:=1 to n do

if i >j then s:= s + a[i,j];

end;

Begin clrscr;

unos(a);

ispod(a,s);

writeln('Najveci element na sporednoj dijaognali je ', s);

readln ;

end.

e)

Program najveci;

uses crt;

type mat=array [1..100,1..100] of integer;

var a:mat;

i,j,n,s:integer;

procedure unos( var a:mat);

Begin writeln('Unesite dimenziju niza');

readln(n);

writeln('Unesite clanove tog niza');

for i:=1 to n do

for j:=1 to n do

Begin write('a(',i,',',j,')= ');

readln(a[i,j]);

end;

end;

procedure negativni(var a:mat; var s:integer);

Begin for i:=1 to n do

for j:=1 to n do

if a[i,j] < 0 then s:= s + a[i,j];

end;

Begin clrscr;

unos(a);

negativni(a,s);

writeln('Suma negativnih elemenata je ', s);

readln ;

end.

2. Napisati procedure kojim se na osnovu date matrice A(NxN) formira niz

b[1], b[2], ... b[n] čiji su elementi redom jednaki:

a) sumi elemenata u vrstama matirce A

b) proizvodu elemenata vrste

c) najmanjim vrednostima u vrstama matrice A

d) razlici najvećih i najmanjih vrednosti u vrsti.

a) program sumaniz;

type mat=array [1..100,1..100] of integer;

niz=array [1..100] of integer;

var a:mat;

b:niz;

i,j,n:integer;

s:integer;

procedure unos( var a:mat);

Begin writeln('Unesite dimenziju niza'); readln(n);

writeln('Unesite clanove tog niza');

for i:=1 to n do

for j:=1 to n do

Begin write('a(',i,',',j,')= ');

readln(a[i,j]);

end;

end;

procedure suma(var a:mat; var b:niz);

Begin for i:=1 to n do

Begin s:=0;

for j:=1 to n do s:= s + a[i,j];

b[i]:=s;

end;

end;

Begin unos(a);

suma(a,b);

writeln('Suma clanova matrice po vrstama je ');

for i:=1 to n do writeln('b[',i,'] = ', b[i]);

readln ;

end.

b) program proizvodniz;

type mat=array [1..100,1..100] of integer;

niz=array [1..100] of integer;

var a:mat;

b:niz;

i,j,n:integer;

p:integer;

procedure unos( var a:mat);

Begin writeln('Unesite dimenziju niza');

readln(n);

writeln('Unesite clanove tog niza');

for i:=1 to n do

for j:=1 to n do

Begin write('a(',i,',',j,')= ');

readln(a[i,j]);

end;

end;

procedure proizvod(var a:mat; var b:niz);

Begin for i:=1 to n do

Begin p:=1;

for j:=1 to n do p:= p * a[i,j];

b[i]:=p;

end;

end;

Begin unos(a);

proizvod(a,b);

writeln('Proizvod clanova matrice po vrstama su ');

for i:=1 to n do writeln('b[',i,'] = ', b[i]);

readln ;

end.

c)

program minniz;

type mat=array [1..100,1..100] of integer;

niz=array [1..100] of integer;

var a:mat;

b:niz;

i,j,n:integer;

min:integer;

procedure unos( var a:mat);

Begin writeln('Unesite dimenziju niza');

readln(n);

writeln('Unesite clanove tog niza');

for i:=1 to n do

for j:=1 to n do

Begin write('a(',i,',',j,')= '); readln(a[i,j]);

end;

end;

procedure minimum(var a:mat; var b:niz);

Begin for i:=1 to n do

Begin min:=a[i,1];

for j:=1 to n do

if min>a[i,j] then min:=a[i,j];

b[i]:=min;

end;

end;

Begin unos(a);

minimum(a,b);

writeln('Najmanji elementi po vrstama matrice su ');

for i:=1 to n do

writeln('b[',i,'] = ', b[i]);

readln ;

end.

d)

program razlikaniz;

type mat=array [1..100,1..100] of integer;

niz=array [1..100] of integer;

var a:mat;

b:niz;

i,j,n:integer;

min,max:integer;

procedure unos( var a:mat);

Begin writeln('Unesite dimenziju niza');

readln(n);

writeln('Unesite clanove tog niza');

for i:=1 to n do

for j:=1 to n do

Begin write('a(',i,',',j,')= ');

readln(a[i,j]);

end;

end;

procedure minimum(var a:mat; var b:niz);

Begin For i:=1 to n do

Begin min:=a[i,1];

max:=a[i,1];

For j:=1 to n do

Begin if min>a[i,j] then min:=a[i,j];

if max<a[i,j] then max:=a[i,j];

end;

b[i]:=max - min;

end;

end;

Begin unos(a);

minimum(a,b);

writeln('Najmanji elementi u vrstama matrice su ');

For i:=1 to n do

writeln('b[',i,'] = ', b[i]);

readln ;

end.

3. Napisati program kojim se u matrici A(NxN) razmenjuju vrsta koja sadrži element najveće

vrednosti i vrsta koja sadrži element najmanje vrednosti.

Program minmaxvrsta;

uses crt;

type mat=array [1..100,1..100] of integer;

niz=array [1..100] of integer;

var a:mat;

mini,maxi:niz;

i,j,n,k,p,pom,min,max,promena:integer;

procedure unos( var a:mat);

Begin writeln('Unesite dimenziju niza'); readln(n);

writeln('Unesite clanove tog niza');

For i:=1 to n do

For j:=1 to n do

Begin write('a(',i,',',j,')= ');

readln(a[i,j]);

end;

end;

procedure minimax(var a:mat; var k,p:integer);

Begin {odredjivanje najmanjih tj. najvecih elemenata po vrstama}

For i:=1 to n do

Begin min:=a[i,1];

max:=a[i,1];

For j:=1 to n do

Begin if min>a[i,j] then min:=a[i,j];

if max<a[i,j] then max:=a[i,j];

end;

mini[i]:=min;

maxi[i]:=max;

end;

{odredjivanje vrste sa najmanjim (k) tj. najvecim (p) elementom}

k:=1; p:=1;

min:=mini[1];

max:=maxi[1];

For i:=2 to n Do if mini[i]<min then

Begin min:=mini[i]; k:=i;

end;

For i:=2 to n Do if maxi[i]>max then

Begin max:=maxi[i]; p:=i ;

end;

end;

procedure razmena(var k,p:integer; var a:mat);

Begin promena:=0;

For i:=1 to n Do

Begin pom:=0;

For j:=1 to n Do

Begin if i=k then

Begin if promena = 0 then

Begin pom:=a[k,j];

a[k,j]:=a[p,j];

a[p,j]:=pom;

if j=n then promena:=1;

end;

end

else if i=p then

Begin if promena =0 then

Begin pom:=a[p,j];

a[p,j]:=a[k,j];

a[k,j]:=pom;

if j=n then promena:=1;

end;

end;

end;

end;

end;

Begin clrscr;

unos(a);

minimax(a,k,p);

razmena(k,p,a);

writeln('Matrica sa razmenjenim vrstama je ');

For i:=1 to n Do

Begin writeln;

For j:=1 to n Do

write(' a(',i,',',j,')= ',a[i,j]:2);

end;

readln ;

end.

DATOTEKE

Definisanje datoteke:

TYPE

brojevi = FILE OF integer;

skupreci = FILE OF string[20];

djak = RECORD

ime: string[20];

prezime: string[20];

END;

skola = FILE OF djak;

ASSIGN(datotečna promenljiva, string) – string je konstanta ili promenljiva koja

identifikuje datoteku na disku.

Na primer, assign(skola, ‘ucenici.dat’);

– datotečna promenljiva spisak je povezana sa datotekom ucenici.dat na aktivnom

disku.

Postojeća datoteka se “otvara” (priprema) za čitanje primenom standardne procedure

RESET (datotečna promenljiva).

Na primer, assign(skola, ‘ucenici.dat’);

reset(skola);

REWRITE(datotečna promenljiva) – naredba kojom se otvara datoteka za upis podataka u

datoteku. Ovom naredbom se briše postojeći sadržaj datoteke.

Na primer, rewrite(skola);

WRITE(datotečna promenljiva, promenljiva tipa slog) – naredba kojom se upisuje slog u

datoteku.

Na primer, write(skola, djak);

pri čemu je promenljiva djak definisana kao slog (record).

READ(datotečna promenljiva, promenljiva tipa slog) – naredba kojom se čitaju slogovi iz

datoteke.

Na primer, read(skola, djak);

pri čemu je promenljiva djak definisana kao slog (record).

1. Napisati program za formiranje datoteke imenik koja se sastoji od slogova sa poljima ime i telefon. Unos podataka se završava kada se umesto imena unese reč ”kraj”

program imen ik ; uses c r t ; t ype s lovo=re cord ime:s t r ing ; t e le fon :s t r ing ; end ; va r sp isak :s lovo ; da t : f i l e o f s lovo ; i : in teger ; s imbo l :s t r ing ; beg in c l rsc r ; ass ign (da t , ' imen i k .da t ' ) ; rese t (da t ) ; rew r i te (da t ) ; i : =1 ; repea t wr i t e ln ( 'Une s i te s led ece podatke ' ) ; w i th sp isak do beg in wr i t e ( 'Unes i te ime p re tp l a tn ika ' ) ; read ln ( ime) ; wr i t e ( 'Unes i te t e le fonsk i b ro j p re tp la tn ika ' ) ; read ln ( te le fon ) ; wr i t e (da t , sp isak ) end ; wr i t e ln ( 'Za k ra j unos a u kuca j te " k ra j " ' ) ; read ln ( s imbo l ) ; i : = i+1 ; un t i l s imbo l = ' k ra j ' ; c lose (da t ) ; read ln ; end .

2. Slog o automobilu se sastoji iz njegove marke, registracije, imena i prezimena vlasnika. Za postojeću datoteku (AUTO.DAT) sa ovakvim slogovima, napisati procedure koje utvrćuju i štampaju:

a) prezimena vlasnika automobila date marke b) broj automobila svake marke.

a) p rogram au tomobi l ; uses c r t ; t ype au to=reco rd marka :s t r ing ; reg is ta r :s t r in g ; ime:s t r ing ; p rez ime: s t r ing ; end ;

var ko la :au to ; da t : f i l e o f au to ; i : in teger ; s imbo l :char ; marka1 :s t r ing ; beg in c l rsc r ; ass ign (da t , 'au to .da t ' ) ; rese t (da t ) ; wr i t e ln ( 'Une s i te ma rku a u tomobi la ko ju ze l i t e ' ) ; read ln (ma rka1 ) ; wr i t e ln ( ' V lasn ic i da te m arke su ' ) ; wh i le no t eo f (da t ) do eo f (da t ) – End Of F i le – k ra j d a to teke beg in w i th ko la do beg in read (da t ,ko la ) ; i f marka 1 = ma rka then beg in wr i t e ln ( ' ' , ime , ' ' ,p re z i me ) ; end ; end ; end ; c lose (da t ) ; read ln ; end .

b) p rogram au tomobi l ; uses c r t ; t ype au to=reco rd marka :s t r ing ; reg is ta r :s t r ing ; ime:s t r ing ; p rez ime: s t r ing ; end ; va r ko la :au to ; da t : f i l e o f au to ; i ,b r : in tege r ; s imbo l :char ; marka1 :s t r ing ; beg in c l rsc r ; ass ign (da t , 'au to .da t ' ) ; rese t (da t ) ;

wr i t e ln ( 'Une s i te ma rku a u tomobi la ko ju ze l i t e ' ) ; read ln (ma rka1 ) ; wh i le no t eo f (da t ) do w i th ko la do beg in read (da t ,ko la ) ; i f marka 1 = ma rka then b r :=br+ 1 ; end ; wr i t e ln ( 'B ro j au tomobi la da te marke je ' ,b r : 3 ) ; c lose (da t ) ; read ln ; end .

3. Za postojeću datoteku (BIBLIOTE.DAT) sa slogovima kojima se opisuju knjige biblioteke i da slog sadrži: ime autora, prezime autora, naziv i godinu izdanja, napisati procedure koje utvrđuju i štampaju nazive knjiga datog autora izdatih od 1970 g. nadalje.

program b ib l io teka ; uses c r t ; t ype kn j iga=record ime :s t r ing ; p rez ime: s t r ing ; naz iv :s t r ing ; god ina : in teger ; end ; va r de la :kn j iga ; da t : f i l e o f kn j iga ; i : in teger ; s imbo l :s t r ing ; beg in c l rsc r ; ass ign (da t , 'b ib l io te .da t ' ) ; rese t (da t ) ; wr i t e ln ( 'Une s i te p rez ime au tora ' ) ; read ln (s imbo l ) ; wr i t e ln ( ' ' , s imbo l , ' j e nap isao s ledec e kn j ige od 1 970 god ine ' ) ; wh i le no t eo f (da t ) do w i th de la do beg in read (da t ,de la ) ; i f s imbo l = p rez ime then i f god ina >= 197 0 t hen wr i t e ln (naz iv ) end ; end ; c lose (da t ) ; read ln ; end .