gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Doterani primeri sortiranja alt
authorIvan Pribela <ivanpribela@gmail.com>
Sun, 16 Oct 2016 19:54:07 +0000 (21:54 +0200)
committerIvan Pribela <ivanpribela@gmail.com>
Sun, 16 Oct 2016 19:54:07 +0000 (21:54 +0200)
sortiranje/knjige/Biblioteka.java
sortiranje/knjige/Biblioteka2.java

index b057472..a4e543e 100644 (file)
@@ -1,14 +1,13 @@
-/**
- * Resenje zadatka sort1 sa vezbi
- */
 import java.util.Arrays;
 
+import org.svetovid.Svetovid;
 import org.svetovid.io.SvetovidReader;
 import org.svetovid.io.SvetovidWriter;
 
 // Klasa koja opisuje jednu knjigu
 class Knjiga implements Comparable<Knjiga> {
 
+    // Osobine jednom kreirane knjige se ne mogu menjati
     private final int id;
     private final String naslov;
     private final String autor;
@@ -19,23 +18,7 @@ class Knjiga implements Comparable<Knjiga> {
         this.autor = autor;
     }
 
-    public String toString() {
-        return id + " " + autor + ": " + naslov;
-    }
-
-    public int compareTo(Knjiga that) {
-        // najjednostavnija verzija: knjige uredjene po "id" broju
-        //return this.id - that.id;
-
-        // autor-naslov
-        int rez = this.autor.compareTo(that.autor);
-        if (rez == 0) {
-            rez = this.naslov.compareTo(that.naslov);
-        }
-        return rez;
-    }
-
-    public String getNaslov(){
+    public String getNaslov() {
         return naslov;
     }
 
@@ -46,6 +29,32 @@ class Knjiga implements Comparable<Knjiga> {
     public int getId() {
         return id;
     }
+
+    public String toString() {
+
+        // Tekstualna reprezentacija knjige oblika:
+        // 9785 J.R.R. Tolkien: The Lord of the Rings
+        return id + " " + autor + ": " + naslov;
+
+    }
+
+    public int compareTo(Knjiga that) {
+
+        // Najjednostavnije poredjenje je po "id" broju
+        // return this.id - that.id;
+
+        // No mi ovde poredimo prvo po autoru
+        int rezultat = this.autor.compareTo(that.autor);
+
+        // A potom po naslovu, ako je sutor isti
+        if (rezultat == 0) {
+            rezultat = this.naslov.compareTo(that.naslov);
+        }
+
+        // Vracamo rezultat poredjenja
+        return rezultat;
+
+    }
 }
 
 // Glavni program
@@ -57,7 +66,9 @@ public class Biblioteka {
         String fajl = Svetovid.in.readLine("Unesite ime fajla sa knjigama:");
         Knjiga[] niz = ucitajKnjige(fajl);
 
+        // Dalje radimo samo ako smo uspeli da ucitamo knjige
         if (niz != null) {
+
             // Stampanje ucitanog niza
             Svetovid.out.println();
             Svetovid.out.println("Nesortirani niz:");
@@ -75,8 +86,9 @@ public class Biblioteka {
 
             // Ispis knjiga u fajl
             String izlazni = Svetovid.in.readLine("Unesite ime fajla za ispis:");
-            snimiKnjige(niz,izlazni);
+            snimiKnjige(niz, izlazni);
 
+        // Prijavljujemo gresku ako nismo uspeli da ucitamo niz
         } else {
             System.err.println("Greska pri ucitavanju niza, kraj rada");
         }
@@ -90,8 +102,8 @@ public class Biblioteka {
             return null;
         }
 
-        // Ako mozemo, napravimo precicu 'in' da ne bi morali da
-        // svaki put kuvamo 'Svetovid.in(fajl)'
+        // Ako mozemo, napravimo precicu 'in' da ne bismo morali
+        // svaki put da kucamo 'Svetovid.in(fajl)'
         SvetovidReader in = Svetovid.in(fajl);
 
         // Koliko ima knjiga u fajlu?
@@ -116,6 +128,9 @@ public class Biblioteka {
 
         }
 
+        // Zatvorimo fajl
+        Svetovid.closeIn(fajl);
+
         // Vratimo ucitani niz
         return rez;
 
@@ -128,27 +143,28 @@ public class Biblioteka {
     }
 
     public static void snimiKnjige(Knjiga[] niz, String ime) {
+
+        // Ako ne mozemo da otvorimo fajl, vracamo se u glavni program
         if (!Svetovid.testOut(ime)) {
-            // ne mozemo da snimimo, vracamo se
-            System.err.println("Nemoguce snimanje u fajl");
+            System.err.println("Snimanje u fajl nije moguce!");
             return;
         }
 
-        // napravimo precicu 'out' da ne bi morali da
-        // svaki put pisemo 'Svetovid.out(ime)'
+        // Napravimo precicu 'out' da ne bismo morali
+        // svaki put da kucamo 'Svetovid.out(ime)'
         SvetovidWriter out = Svetovid.out(ime);
 
-        // pisemo broj knjiga, kao u originalu
+        // Upisemo ukupan broj knjiga, kao u originalnom fajlu
         out.println(niz.length);
 
-        // za svaku knjigu ispisujemo podatke
+        // Za svaku knjigu upisemo redom sve podatke
         for (Knjiga knjiga : niz) {
             out.println(knjiga.getId());
             out.println(knjiga.getNaslov());
             out.println(knjiga.getAutor());
         }
 
-        // zatvorimo izlaz
+        // Zatvorimo izlaz
         out.close();
 
     }
index 0998f98..d46a897 100644 (file)
@@ -1,17 +1,17 @@
-/**\r
- * Resenje zadatka opisanog u zad-sort2, koji je prosirenje zad-sort1\r
- */\r
-\r
-import org.svetovid.io.*;\r
 import java.util.Arrays;\r
 import java.util.Comparator;\r
 \r
+import org.svetovid.Svetovid;\r
+import org.svetovid.io.SvetovidReader;\r
+import org.svetovid.io.SvetovidWriter;\r
+\r
 // Klasa koja opisuje jednu knjigu\r
 class Knjiga implements Comparable<Knjiga> {\r
 \r
-    public final int id;\r
-    public final String naslov;\r
-    public final String autor;\r
+    // Osobine jednom kreirane knjige se ne mogu menjati\r
+    private final int id;\r
+    private final String naslov;\r
+    private final String autor;\r
 \r
     public Knjiga(int id, String naslov, String autor) {\r
         this.id = id;\r
@@ -19,12 +19,42 @@ class Knjiga implements Comparable<Knjiga> {
         this.autor = autor;\r
     }\r
 \r
+    public String getNaslov() {\r
+        return naslov;\r
+    }\r
+\r
+    public String getAutor() {\r
+        return autor;\r
+    }\r
+\r
+    public int getId() {\r
+        return id;\r
+    }\r
+\r
     public String toString() {\r
+\r
+        // Tekstualna reprezentacija knjige oblika:\r
+        // 9785 J.R.R. Tolkien: The Lord of the Rings\r
         return id + " " + autor + ": " + naslov;\r
+\r
     }\r
 \r
     public int compareTo(Knjiga that) {\r
-        return this.id - that.id;\r
+\r
+        // Najjednostavnije poredjenje je po "id" broju\r
+        // return this.id - that.id;\r
+\r
+        // No mi ovde poredimo prvo po autoru\r
+        int rezultat = this.autor.compareTo(that.autor);\r
+\r
+        // A potom po naslovu, ako je sutor isti\r
+        if (rezultat == 0) {\r
+            rezultat = this.naslov.compareTo(that.naslov);\r
+        }\r
+\r
+        // Vracamo rezultat poredjenja\r
+        return rezultat;\r
+\r
     }\r
 }\r
 \r
@@ -92,7 +122,7 @@ public class Biblioteka2 {
         }\r
 \r
         // Ako mozemo, napravimo precicu 'in' da ne bi morali da\r
-        // svaki put kuvamo 'Svetovid.in(imeFajla)'\r
+        // svaki put kucamo 'Svetovid.in(imeFajla)'\r
         SvetovidReader in = Svetovid.in(imeFajla);\r
 \r
         // Koliko ima knjiga u fajlu?\r
@@ -154,10 +184,10 @@ public class Biblioteka2 {
         fajl.println(niz.length);\r
 \r
         // I potom podatke za svaku knjigu\r
-        for (Knjiga k : niz) {\r
-            fajl.println(k.id);\r
-            fajl.println(k.naslov);\r
-            fajl.println(k.autor);\r
+        for (Knjiga knjiga : niz) {\r
+            fajl.println(knjiga.getId());\r
+            fajl.println(knjiga.getNaslov());\r
+            fajl.println(knjiga.getAutor());\r
         }\r
 \r
         // Zatvorimo fajl\r
@@ -170,13 +200,15 @@ public class Biblioteka2 {
 \r
     public static void sortirajNiz(Knjiga[] niz, Comparator<Knjiga> c) {\r
         Knjiga tmp;\r
-        for (int i = niz.length - 1; i > 0; i--)\r
-            for (int j = 0; j < i; j++)\r
+        for (int i = niz.length - 1; i > 0; i--) {\r
+            for (int j = 0; j < i; j++) {\r
                 if (c.compare(niz[j], niz[i]) > 0) {\r
                     tmp = niz[j];\r
                     niz[j] = niz[i];\r
                     niz[i] = tmp;\r
                 }\r
+            }\r
+        }\r
     }\r
 \r
 }\r
@@ -186,7 +218,7 @@ class KomparatorPoNaslovu implements Comparator<Knjiga> {
 \r
     @Override\r
     public int compare(Knjiga knjiga1, Knjiga knjiga2) {\r
-        int rezultat = knjiga1.naslov.compareTo(knjiga2.naslov);\r
+        int rezultat = knjiga1.getNaslov().compareTo(knjiga2.getNaslov());\r
         return rezultat;\r
     }\r
 }\r
@@ -196,7 +228,7 @@ class KomparatorPoAutoru implements Comparator<Knjiga> {
 \r
     @Override\r
     public int compare(Knjiga knjiga1, Knjiga knjiga2) {\r
-        int rezultat = knjiga1.autor.compareTo(knjiga2.autor);\r
+        int rezultat = knjiga1.getAutor().compareTo(knjiga2.getAutor());\r
         return rezultat;\r
     }\r
 }\r
@@ -222,7 +254,6 @@ class ObrnutiKomparator implements Comparator<Knjiga> {
 \r
     @Override\r
     public int compare(Knjiga knjiga1, Knjiga knjiga2) {\r
-\r
         return -originalni.compare(knjiga1, knjiga2);\r
     }\r
 }\r
@@ -233,8 +264,7 @@ class KompozitniKomparator implements Comparator<Knjiga> {
     private final Comparator<Knjiga> primarni;\r
     private final Comparator<Knjiga> sekundarni;\r
 \r
-    public KompozitniKomparator(Comparator<Knjiga> primarni,\r
-            Comparator<Knjiga> sekundarni) {\r
+    public KompozitniKomparator(Comparator<Knjiga> primarni, Comparator<Knjiga> sekundarni) {\r
         this.primarni = primarni;\r
         this.sekundarni = sekundarni;\r
     }\r
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner