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