gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Merge branch 'master' into public
[spa1skripta-public.git] / kodovi / fajlovi / nizslog.MOD
diff --git a/kodovi/fajlovi/nizslog.MOD b/kodovi/fajlovi/nizslog.MOD
new file mode 100644 (file)
index 0000000..e427bfa
--- /dev/null
@@ -0,0 +1,123 @@
+MODULE nizslog;\r
+FROM InOut IMPORT WriteString, WriteLn, WriteCard,\r
+    ReadCard, ReadString;\r
+FROM FIO IMPORT File, Exists, Open, Create, Close, EOF,\r
+    RdItem, RdCard, WrStr, WrCard, WrLn;\r
+FROM Str IMPORT Compare;\r
+\r
+CONST\r
+    MaxStud = 100;\r
+    radnifajl = "studenti.txt";\r
+TYPE\r
+    String = ARRAY[1..30] OF CHAR;\r
+    Student = RECORD\r
+        ime, prez: String;\r
+        god: CARDINAL;\r
+    END;\r
+    Studenti = ARRAY[1..MaxStud] OF Student;\r
+\r
+PROCEDURE UcitajF(fajl:String;\r
+          VAR spisak: Studenti; VAR n:CARDINAL);\r
+VAR\r
+    f:File;\r
+BEGIN\r
+    n:=0;\r
+    IF Exists(fajl) THEN\r
+        f:= Open(fajl);\r
+        EOF := FALSE;\r
+        WHILE NOT EOF DO\r
+            INC(n);\r
+            RdItem(f, spisak[n].prez);\r
+            RdItem(f, spisak[n].ime);\r
+            spisak[n].god := RdCard(f);\r
+        END;\r
+        Close(f);\r
+    END;\r
+END UcitajF;\r
+\r
+PROCEDURE Ispisi(spisak:Studenti; n:CARDINAL);\r
+VAR\r
+    i: CARDINAL;\r
+BEGIN\r
+    FOR i:=1 TO n DO\r
+        WriteString(spisak[i].prez);\r
+        WriteString(" ");\r
+        WriteString(spisak[i].ime);\r
+        WriteString(" ");\r
+        WriteCard(spisak[i].god,1);\r
+        WriteLn;\r
+    END;\r
+END Ispisi;\r
+\r
+PROCEDURE IspisiF(fajl:String;\r
+          spisak:Studenti; n:CARDINAL);\r
+VAR\r
+    f:File;\r
+    i: CARDINAL;\r
+BEGIN\r
+    IF (n>0) AND (n<=MaxStud) THEN\r
+        f:=Create(fajl);\r
+        (* pravimo takav fajl da ne\r
+           postoji zadnji prazan red *)\r
+        FOR i:=1 TO n-1 DO\r
+            WrStr(f,spisak[i].prez);\r
+            WrStr(f," ");\r
+            WrStr(f,spisak[i].ime);\r
+            WrStr(f," ");\r
+            WrCard(f,spisak[i].god,1);\r
+            WrLn(f);\r
+        END;\r
+        WrStr(f,spisak[n].prez);\r
+        WrStr(f," ");\r
+        WrStr(f,spisak[n].ime);\r
+        WrStr(f," ");\r
+        WrCard(f,spisak[n].god,1);\r
+        Close(f);\r
+    END;\r
+END IspisiF;\r
+\r
+PROCEDURE NoviStudent(VAR spisak:Studenti; VAR n:CARDINAL);\r
+VAR\r
+    stud,temp:Student;\r
+    i:CARDINAL;\r
+    dodaj:BOOLEAN;\r
+BEGIN\r
+    IF n<MaxStud THEN\r
+        WriteString("Prezime novog studenta?");\r
+        ReadString(stud.prez);\r
+        WriteString("Ime novog studenta?");\r
+        ReadString(stud.ime);\r
+        WriteString("God. rodj. novog studenta?");\r
+        ReadCard(stud.god);\r
+        (* proverimo da li vec postoji *)\r
+        i:=1;\r
+        dodaj := TRUE;\r
+        WHILE (i<=n) AND dodaj DO\r
+            temp := spisak[i];\r
+            IF (temp.god = stud.god) &\r
+              (Compare(temp.prez,stud.prez)=0) &\r
+              (Compare(temp.ime,stud.ime)=0) THEN\r
+                dodaj:=FALSE;\r
+            END;\r
+            INC(i);\r
+        END;\r
+        IF dodaj THEN\r
+            INC(n);\r
+            spisak[n]:=stud;\r
+        ELSE\r
+            WriteString("podaci vec postoje!");\r
+        END;\r
+    ELSE\r
+        WriteString("popunjen kapacitet!");\r
+    END;\r
+END NoviStudent;\r
+\r
+VAR\r
+    spisak : Studenti;\r
+    n:CARDINAL;\r
+BEGIN\r
+    UcitajF(radnifajl, spisak, n);\r
+    Ispisi(spisak, n);\r
+    NoviStudent(spisak,n);\r
+    IspisiF(radnifajl, spisak, n);\r
+END nizslog.
\ No newline at end of file
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner