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.

BEGIN<br />

REPEAT<br />

WriteLn;<br />

WriteString('Unesite redni broj radnika -- ');<br />

ReadCard(br)<br />

UNTIL Done;<br />

WriteLn;<br />

WHILE (rad # NIL) AND (rad^.broj < br) DO<br />

rad := rad^.sled<br />

END;<br />

IF (rad = NIL) OR (rad^.broj # br) THEN<br />

WriteString('Greska.')<br />

ELSE<br />

WriteString(rad^.ime);<br />

WriteString(' ');<br />

WriteString(rad^.prez)<br />

END<br />

END Inform;<br />

PROCEDURE Bankrot(VAR rad : radnici);<br />

VAR<br />

pom : radnici;<br />

BEGIN<br />

WHILE rad # NIL DO<br />

pom := rad;<br />

rad := rad^.sled;<br />

DISPOSE(pom)<br />

END<br />

END Bankrot;<br />

BEGIN<br />

rad := NIL;<br />

REPEAT<br />

Clear;<br />

WriteString('s - spisak svih <strong>za</strong>poslenih');<br />

WriteLn;<br />

WriteString('z - <strong>za</strong>poslavanje novog radnika');<br />

WriteLn;<br />

WriteString('o - otpustanje radnika');<br />

WriteLn;<br />

WriteString('i - informacije o radniku');<br />

WriteLn;<br />

WriteString('b - bankrot firme');<br />

WriteLn;<br />

WriteString('k - kraj rada');<br />

WriteLn;<br />

REPEAT<br />

Read(meni)<br />

UNTIL CAP(meni) IN skupZn{'S','Z','O','I','B','K'};<br />

Clear;<br />

IF CAP(meni) # 'K' THEN<br />

CASE CAP(meni) OF<br />

'S' : Spisak(rad)|<br />

'Z' : Zaposli(rad)|<br />

'O' : Otpusti(rad)|<br />

'I' : Inform(rad)|<br />

'B' : Bankrot(rad)<br />

END;<br />

Read(pom)<br />

END<br />

UNTIL CAP(meni) = 'K'<br />

END Radnici.<br />

ZADATAK: Dvostruko pove<strong>za</strong>na lista osoba sortirana po visini i<br />

po težini.<br />

(* Sa tastature ucitavati dva broja (visina i tezina) i<br />

smestati ih u dvostruko pove<strong>za</strong>nu listu, tako da ona<br />

bude neopadajuce uredena po visini i tezini. *)<br />

MODULE VisTez;<br />

FROM Storage IMPORT ALLOCATE, DEALLOCATE;<br />

FROM IO IMPORT WrLn, WrStr, RdCard, WrCard;<br />

FROM SYSTEM IMPORT TSIZE;<br />

TYPE<br />

pok = POINTER TO element;<br />

element = RECORD<br />

visina, tezina : CARDINAL;<br />

Vve<strong>za</strong>, Tve<strong>za</strong> : pok<br />

END;<br />

VAR<br />

pocV, pocT : pok;<br />

vis, tez : CARDINAL;<br />

PROCEDURE Ispisi(pocV, pocT : pok);<br />

VAR<br />

tek : pok;<br />

BEGIN<br />

tek := pocV;<br />

5<br />

WrStr('Po visini:');<br />

WrLn;<br />

WHILE tek # NIL DO<br />

WrCard(tek^.visina, 6);<br />

tek := tek^.Vve<strong>za</strong><br />

END;<br />

WrLn;<br />

tek := pocT;<br />

WrStr('Po tezini:');<br />

WrLn;<br />

WHILE tek # NIL DO<br />

WrCard(tek^.tezina,6);<br />

tek := tek^.Tve<strong>za</strong><br />

END<br />

END Ispisi;<br />

PROCEDURE Ubaci(VAR pocV, pocT : pok;<br />

vis, tez : CARDINAL);<br />

VAR<br />

novi, tek, i<strong>za</strong> : pok;<br />

nadjen : BOOLEAN;<br />

BEGIN<br />

IF pocV = NIL THEN<br />

ALLOCATE(pocV, TSIZE(element));<br />

pocV^.visina := vis;<br />

pocV^.tezina := tez;<br />

pocV^.Vve<strong>za</strong> := NIL;<br />

pocV^.Tve<strong>za</strong> := NIL;<br />

pocT := pocV<br />

ELSE<br />

ALLOCATE(novi, TSIZE(element));<br />

novi^.visina := vis;<br />

novi^.tezina := tez;<br />

tek := pocV;<br />

nadjen := FALSE;<br />

WHILE (tek # NIL) AND NOT nadjen DO<br />

nadjen := vis

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

Saved successfully!

Ooh no, something went wrong!