26.02.2015 Views

Skripte za vezbe iz SPA1 - Univerzitet u Novom Sadu

Skripte za vezbe iz SPA1 - Univerzitet u Novom Sadu

Skripte za vezbe iz SPA1 - Univerzitet u Novom Sadu

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

WriteInt(Max,3);<br />

WriteString(' u intervalu od ');<br />

WriteCard(Ood,3);<br />

WriteString(' do ');<br />

WriteCard(Doo,3)<br />

END MaxNi<strong>za</strong>1.<br />

MODULE MaxNi<strong>za</strong>2;<br />

(* Drugo resenje: O(n^2). Koristi se cinjenica da je<br />

suma X[d..g] <strong>iz</strong>racunljiva <strong>iz</strong> X[d..g-1]. *)<br />

FROM InOut IMPORT<br />

WriteString,ReadInt,WriteInt,WriteCard,WriteLn;<br />

CONST<br />

N = 10;<br />

TYPE<br />

Interval = [1..N];<br />

VAR<br />

Max, Suma : INTEGER;<br />

d,g,i,Ood,Doo : Interval;<br />

X : ARRAY Interval OF INTEGER;<br />

BEGIN<br />

WriteString(' Unesite n<strong>iz</strong> X ');<br />

WriteLn;<br />

FOR i := 1 TO N DO<br />

ReadInt(X[i]);<br />

WriteLn<br />

END;<br />

Max := 0;<br />

FOR d := 1 TO N DO<br />

Suma := 0;<br />

FOR g := d TO N DO<br />

Suma := Suma + X[g];<br />

IF Suma > Max THEN<br />

Max := Suma;<br />

Ood := d;<br />

Doo := g<br />

END<br />

END<br />

END;<br />

WriteLn;<br />

WriteString(' Maksimum je ');<br />

WriteInt(Max,3);<br />

WriteString(' u intervalu od ');<br />

WriteCard(Ood,3);<br />

WriteString(' do ');<br />

WriteCard(Doo,3)<br />

END MaxNi<strong>za</strong>2.<br />

MODULE MaxNi<strong>za</strong>3;<br />

(* Trece resenje: O(n^2). Koristi pomocni n<strong>iz</strong> u kome je<br />

na i-tom mestu suma podni<strong>za</strong> x[1..i] *)<br />

FROM InOut IMPORT<br />

WriteString,ReadInt,WriteInt,WriteCard,WriteLn;<br />

CONST<br />

N = 10;<br />

TYPE<br />

Interval = [1..N];<br />

VAR<br />

Max, Suma : INTEGER;<br />

d,g,i,Ood,Doo : Interval;<br />

X : ARRAY Interval OF INTEGER;<br />

Pom : ARRAY [0..N] OF INTEGER;<br />

BEGIN<br />

WriteString(' Unesite n<strong>iz</strong> X ');<br />

WriteLn;<br />

FOR i := 1 TO N DO<br />

ReadInt(X[i]);<br />

WriteLn<br />

END;<br />

Pom[0] := 0;<br />

FOR i := 1 TO N DO<br />

Pom[i] := Pom[i-1] + X[i]<br />

END;<br />

Max := 0;<br />

FOR d := 1 TO N DO<br />

FOR g := d TO N DO<br />

Suma := Pom[g] - Pom[d-1];<br />

IF Suma > Max THEN<br />

Max := Suma;<br />

Ood := d;<br />

Doo := g<br />

END<br />

END<br />

END;<br />

WriteLn;<br />

WriteString(' Maksimum je ');<br />

WriteInt(Max,3);<br />

WriteString(' u intervalu od ');<br />

3<br />

WriteCard(Ood,3);<br />

WriteString(' do ');<br />

WriteCard(Doo,3)<br />

END MaxNi<strong>za</strong>3.<br />

MODULE MaxNi<strong>za</strong>4;<br />

(* Cetvrto resenje. Najbolje moguce: O(n) *)<br />

FROM InOut IMPORT<br />

WriteString,ReadInt,WriteInt,WriteCard,WriteLn;<br />

CONST<br />

N = 10;<br />

TYPE<br />

Interval = [1..N];<br />

VAR<br />

Max, MaxDovde : INTEGER;<br />

i,d,Ood,Doo : Interval;<br />

X : ARRAY Interval OF INTEGER;<br />

BEGIN<br />

WriteString(' Unesite n<strong>iz</strong> X ');<br />

WriteLn;<br />

FOR i := 1 TO N DO<br />

ReadInt(X[i]);<br />

WriteLn<br />

END;<br />

Max := 0;<br />

MaxDovde := 0;<br />

FOR i := 1 TO N DO<br />

IF MaxDovde = 0 THEN<br />

d := i<br />

END;<br />

MaxDovde := MaxDovde + X[i];<br />

IF MaxDovde < 0 THEN<br />

MaxDovde := 0<br />

END;<br />

IF MaxDovde > Max THEN<br />

Ood := d;<br />

Doo := i;<br />

Max := MaxDovde<br />

END<br />

END;<br />

WriteLn;<br />

WriteString(' Maksimum je ');<br />

WriteInt(Max,3);<br />

WriteString(' u intervalu od ');<br />

WriteCard(Ood,3);<br />

WriteString(' do ');<br />

WriteCard(Doo,3)<br />

END MaxNi<strong>za</strong>4.<br />

ZADATAK: Ilustracija rada sa nekim standardnim modulima.<br />

MODULE Primer;<br />

FROM InOut IMPORT ReadString, ReadCard, Read, WriteLn,<br />

WriteString, WriteCard;<br />

FROM FIO IMPORT File, StandardOutput, PrinterDevice,<br />

Create, Close, Exists, WrCard, WrStr, WrReal, WrLn,<br />

WrChar, WrLngReal;<br />

FROM Str IMPORT Length, Slice;<br />

FROM Lib IMPORT Sound, NoSound, Delay;<br />

FROM MATHLIB IMPORT Sqrt, Log;<br />

CONST<br />

Gr = 5;<br />

TYPE<br />

string = ARRAY [1..50] OF CHAR;<br />

podatakTip = RECORD<br />

UcitString : string;<br />

UcitBroj : CARDINAL<br />

END;<br />

VAR<br />

imedat : string;<br />

UlazniPod : ARRAY [1..Gr] OF podatakTip;<br />

PodStr : ARRAY [1..4] OF CHAR;<br />

<strong>iz</strong>laz : File;<br />

i, frekv : CARDINAL;<br />

<strong>iz</strong>bor : CHAR;<br />

BEGIN<br />

REPEAT<br />

WriteString('p - <strong>iz</strong>laz na printer');<br />

WriteLn;<br />

WriteString('f - <strong>iz</strong>laz u fajl');<br />

WriteLn;<br />

WriteString('e - ekran');<br />

WriteLn;<br />

Read(<strong>iz</strong>bor)<br />

UNTIL (CAP(<strong>iz</strong>bor) = 'P') OR (CAP(<strong>iz</strong>bor) = 'F') OR<br />

(CAP(<strong>iz</strong>bor) = 'E');<br />

IF CAP(<strong>iz</strong>bor) = 'P' THEN<br />

<strong>iz</strong>laz := PrinterDevice;

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!