gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Sortiranje, sredjeno formatiranje, uvlacenje i novi redovi
authorIvan Pribela <ivanpribela@gmail.com>
Sun, 1 Nov 2015 14:55:47 +0000 (15:55 +0100)
committerIvan Pribela <ivanpribela@gmail.com>
Sun, 1 Nov 2015 14:55:47 +0000 (15:55 +0100)
sortiranje/knjige/Biblioteka2.java
sortiranje/knjige/zad-sort2.txt
sortiranje/raspored/Raspored.java
sortiranje/raspored/r.txt

index 5a680142aeb7c0b0441f43f351dc0d7fbe9161d3..ff33aeb1ca89614ac5e01f07d7031de2ba090c71 100644 (file)
@@ -9,253 +9,249 @@ import java.util.Comparator;
 // 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
-\r
-       public Knjiga(int id, String naslov, String autor) {\r
-               this.id = id;\r
-               this.naslov = naslov;\r
-               this.autor = autor;\r
-       }\r
-\r
-       public String toString() {\r
-               return id + " " + autor + ": " + naslov;\r
-       }\r
-\r
-       public int compareTo(Knjiga that) {\r
-               return this.id - that.id;\r
-       }\r
+    public final int id;\r
+    public final String naslov;\r
+    public final String autor;\r
+\r
+    public Knjiga(int id, String naslov, String autor) {\r
+        this.id = id;\r
+        this.naslov = naslov;\r
+        this.autor = autor;\r
+    }\r
+\r
+    public String toString() {\r
+        return id + " " + autor + ": " + naslov;\r
+    }\r
+\r
+    public int compareTo(Knjiga that) {\r
+        return this.id - that.id;\r
+    }\r
 }\r
 \r
 // Glavni program\r
 public class Biblioteka2 {\r
 \r
-       public static void main(String[] arguments) {\r
-\r
-               // Ucitavamo knjige iz fajla\r
-               String imeFajla = Svetovid.in\r
-                               .readLine("Unesite ime fajla sa knjigama:");\r
-               Knjiga[] niz = ucitajKnjige(imeFajla);\r
-\r
-               // Ako nismo ucitali knjige, zavrsavamo program sa return\r
-               if (niz == null) {\r
-                       Svetovid.out.println("Ne moze da se cita iz fajla " + imeFajla\r
-                                       + ".");\r
-                       return;\r
-               }\r
+    public static void main(String[] arguments) {\r
 \r
-               // Pitamo korisnika za kriterijum sortiranja\r
-               Svetovid.out.println("Opcija 1: standardan sort bez komparatora");\r
-               Svetovid.out.println("Opcija 2: sort sa opadajucim id knjige");\r
-               Svetovid.out.println("Opcija 3: sort po naslovu");\r
-               Svetovid.out.println("Opcija 4: sort po autoru, a zatim po naslovu");\r
-               Svetovid.out.println("Za ostale opcije niz nece biti sortiran");\r
-               Svetovid.out.print("Unesite opciju 1-4:");\r
-               int opcija = Svetovid.in.readInt();\r
-\r
-               // Sortiramo po odabranom kriterijumu\r
-               switch (opcija) {\r
-               case 1:\r
-                       Arrays.sort(niz);\r
-                       break;\r
-               case 2:\r
-                       sortirajNiz(niz, new ObrnutiKomparator(new PrirodniKomparator()));\r
-                       break;\r
-               case 3:\r
-                       sortirajNiz(niz, new KomparatorPoNaslovu());\r
-                       break;\r
-               case 4:\r
-                       sortirajNiz(niz, new KomparatorPoAutoruIPotomNaslovu());\r
-                       break;\r
-               default:\r
-                       Svetovid.out.println("Pogresna opcija! Niz nece biti sortiran.");\r
-               }\r
+        // Ucitavamo knjige iz fajla\r
+        String imeFajla = Svetovid.in.readLine("Unesite ime fajla sa knjigama:");\r
+        Knjiga[] niz = ucitajKnjige(imeFajla);\r
 \r
-               // Stampamo niz\r
-               stampajKnjige("Niz knjiga", niz);\r
-\r
-               // Sacuvamo (sortirani) niz u novi fajl\r
-               imeFajla = Svetovid.in.readLine("Unesite ime fajla za snimanje: ");\r
-               boolean sacuvano = sacuvajKnjige(imeFajla, niz);\r
-\r
-               // Ako nismo sacuvali knjige, prijavimo to korisniku\r
-               if (!sacuvano) {\r
-                       Svetovid.out.println("Ne moze da se pise u fajl " + imeFajla + ".");\r
-               }\r
-\r
-       }\r
-\r
-       public static Knjiga[] ucitajKnjige(String imeFajla) {\r
-\r
-               // Ako ne mozemo da otvorimo fajl, ne ucitavamo knjige\r
-               if (!Svetovid.testIn(imeFajla)) {\r
-                       return null;\r
-               }\r
-\r
-               // Ako mozemo, napravimo precicu 'in' da ne bi morali da\r
-               // svaki put kuvamo 'Svetovid.in(imeFajla)'\r
-               SvetovidReader in = Svetovid.in(imeFajla);\r
-\r
-               // Koliko ima knjiga u fajlu?\r
-               int br = in.readInt();\r
-\r
-               // Napravimo niz odgovarajuce velicine\r
-               Knjiga[] rez = new Knjiga[br];\r
-\r
-               // Ucitamo knjige\r
-               for (int i = 0; i < br; i++) {\r
-\r
-                       // Ucitamo podatke o knjizi\r
-                       int id = in.readInt();\r
-                       String naslov = in.readLine();\r
-                       String autor = in.readLine();\r
-\r
-                       // Napravimo knjigu\r
-                       Knjiga knjiga = new Knjiga(id, naslov, autor);\r
-\r
-                       // Dodamo knjigu u niz\r
-                       rez[i] = knjiga;\r
-\r
-               }\r
-\r
-               // Zatvorimo fajl\r
-               in.close();\r
-\r
-               // Vratimo ucitani niz\r
-               return rez;\r
-\r
-       }\r
-\r
-       public static void stampajKnjige(String naslov, Knjiga[] niz) {\r
-\r
-               // Odstampamo naslov\r
-               Svetovid.out.println();\r
-               Svetovid.out.println(naslov);\r
-               Svetovid.out.println();\r
-\r
-               // I potom sve knjige redom\r
-               for (Knjiga knjiga : niz) {\r
-                       Svetovid.out.println(knjiga);\r
-               }\r
-\r
-       }\r
-\r
-       public static boolean sacuvajKnjige(String imeFajla, Knjiga[] niz) {\r
-\r
-               // Ako ne mozemo da otvorimo fajl, ne upisujemo knjige\r
-               if (!Svetovid.testOut(imeFajla)) {\r
-                       return false;\r
-               }\r
-\r
-               // Ako mozemo, napravimo precicu 'out' da ne bi morali da\r
-               // svaki put kuvamo 'Svetovid.out(imeFajla)'\r
-               SvetovidWriter fajl = Svetovid.out(imeFajla);\r
+        // Ako nismo ucitali knjige, zavrsavamo program sa return\r
+        if (niz == null) {\r
+            Svetovid.out.println("Ne moze da se cita iz fajla " + imeFajla + ".");\r
+            return;\r
+        }\r
 \r
-               // Upisemo ukupan broj knjiga\r
-               fajl.println(niz.length);\r
+        // Pitamo korisnika za kriterijum sortiranja\r
+        Svetovid.out.println("Opcija 1: standardan sort bez komparatora");\r
+        Svetovid.out.println("Opcija 2: sort sa opadajucim id knjige");\r
+        Svetovid.out.println("Opcija 3: sort po naslovu");\r
+        Svetovid.out.println("Opcija 4: sort po autoru, a zatim po naslovu");\r
+        Svetovid.out.println("Za ostale opcije niz nece biti sortiran");\r
+        Svetovid.out.print("Unesite opciju 1-4:");\r
+        int opcija = Svetovid.in.readInt();\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
-               }\r
+        // Sortiramo po odabranom kriterijumu\r
+        switch (opcija) {\r
+        case 1:\r
+            Arrays.sort(niz);\r
+            break;\r
+        case 2:\r
+            sortirajNiz(niz, new ObrnutiKomparator(new PrirodniKomparator()));\r
+            break;\r
+        case 3:\r
+            sortirajNiz(niz, new KomparatorPoNaslovu());\r
+            break;\r
+        case 4:\r
+            sortirajNiz(niz, new KomparatorPoAutoruIPotomNaslovu());\r
+            break;\r
+        default:\r
+            Svetovid.out.println("Pogresna opcija! Niz nece biti sortiran.");\r
+        }\r
 \r
-               // Zatvorimo fajl\r
-               Svetovid.closeOut(imeFajla);\r
+        // Stampamo niz\r
+        stampajKnjige("Niz knjiga", niz);\r
 \r
-               // Javimo da smo uspesno sacuvali knjige\r
-               return true;\r
+        // Sacuvamo (sortirani) niz u novi fajl\r
+        imeFajla = Svetovid.in.readLine("Unesite ime fajla za snimanje: ");\r
+        boolean sacuvano = sacuvajKnjige(imeFajla, niz);\r
+\r
+        // Ako nismo sacuvali knjige, prijavimo to korisniku\r
+        if (!sacuvano) {\r
+            Svetovid.out.println("Ne moze da se pise u fajl " + imeFajla + ".");\r
+        }\r
+\r
+    }\r
+\r
+    public static Knjiga[] ucitajKnjige(String imeFajla) {\r
+\r
+        // Ako ne mozemo da otvorimo fajl, ne ucitavamo knjige\r
+        if (!Svetovid.testIn(imeFajla)) {\r
+            return null;\r
+        }\r
+\r
+        // Ako mozemo, napravimo precicu 'in' da ne bi morali da\r
+        // svaki put kuvamo 'Svetovid.in(imeFajla)'\r
+        SvetovidReader in = Svetovid.in(imeFajla);\r
+\r
+        // Koliko ima knjiga u fajlu?\r
+        int br = in.readInt();\r
+\r
+        // Napravimo niz odgovarajuce velicine\r
+        Knjiga[] rez = new Knjiga[br];\r
+\r
+        // Ucitamo knjige\r
+        for (int i = 0; i < br; i++) {\r
+\r
+            // Ucitamo podatke o knjizi\r
+            int id = in.readInt();\r
+            String naslov = in.readLine();\r
+            String autor = in.readLine();\r
+\r
+            // Napravimo knjigu\r
+            Knjiga knjiga = new Knjiga(id, naslov, autor);\r
+\r
+            // Dodamo knjigu u niz\r
+            rez[i] = knjiga;\r
+\r
+        }\r
+\r
+        // Zatvorimo fajl\r
+        in.close();\r
+\r
+        // Vratimo ucitani niz\r
+        return rez;\r
+\r
+    }\r
+\r
+    public static void stampajKnjige(String naslov, Knjiga[] niz) {\r
+\r
+        // Odstampamo naslov\r
+        Svetovid.out.println();\r
+        Svetovid.out.println(naslov);\r
+        Svetovid.out.println();\r
+\r
+        // I potom sve knjige redom\r
+        for (Knjiga knjiga : niz) {\r
+            Svetovid.out.println(knjiga);\r
+        }\r
+\r
+    }\r
+\r
+    public static boolean sacuvajKnjige(String imeFajla, Knjiga[] niz) {\r
+\r
+        // Ako ne mozemo da otvorimo fajl, ne upisujemo knjige\r
+        if (!Svetovid.testOut(imeFajla)) {\r
+            return false;\r
+        }\r
+\r
+        // Ako mozemo, napravimo precicu 'out' da ne bi morali da\r
+        // svaki put kucamo 'Svetovid.out(imeFajla)'\r
+        SvetovidWriter fajl = Svetovid.out(imeFajla);\r
 \r
-       }\r
+        // Upisemo ukupan broj knjiga\r
+        fajl.println(niz.length);\r
 \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
-                               if (c.compare(niz[j], niz[i]) > 0) {\r
-                                       tmp = niz[j];\r
-                                       niz[j] = niz[i];\r
-                                       niz[i] = tmp;\r
-                               }\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
+        }\r
+\r
+        // Zatvorimo fajl\r
+        Svetovid.closeOut(imeFajla);\r
+\r
+        // Javimo da smo uspesno sacuvali knjige\r
+        return true;\r
+\r
+    }\r
+\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
+                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
-// Komparator koji poredi knjige po naslovu\r
+// Koparator koji poredi knjige po naslovu\r
 class KomparatorPoNaslovu implements Comparator<Knjiga> {\r
 \r
-       @Override\r
-       public int compare(Knjiga knjiga1, Knjiga knjiga2) {\r
-               int rezultat = knjiga1.naslov.compareTo(knjiga2.naslov);\r
-               return rezultat;\r
-       }\r
+    @Override\r
+    public int compare(Knjiga knjiga1, Knjiga knjiga2) {\r
+        int rezultat = knjiga1.naslov.compareTo(knjiga2.naslov);\r
+        return rezultat;\r
+    }\r
 }\r
 \r
-// Komparator koji poredi knjige po naslovu\r
+// Koparator koji poredi knjige po naslovu\r
 class KomparatorPoAutoru implements Comparator<Knjiga> {\r
 \r
-       @Override\r
-       public int compare(Knjiga knjiga1, Knjiga knjiga2) {\r
-               int rezultat = knjiga1.autor.compareTo(knjiga2.autor);\r
-               return rezultat;\r
-       }\r
+    @Override\r
+    public int compare(Knjiga knjiga1, Knjiga knjiga2) {\r
+        int rezultat = knjiga1.autor.compareTo(knjiga2.autor);\r
+        return rezultat;\r
+    }\r
 }\r
 \r
-// Komparator koji koristi prirodni poredak, tj. samo poziva compareTo()\r
+// Koparator koji koristi prirodni poredak, tj. samo poziva compareTo()\r
 class PrirodniKomparator implements Comparator<Knjiga> {\r
 \r
-       @Override\r
-       public int compare(Knjiga knjiga1, Knjiga knjiga2) {\r
-               return knjiga1.compareTo(knjiga2);\r
-       }\r
+    @Override\r
+    public int compare(Knjiga knjiga1, Knjiga knjiga2) {\r
+        return knjiga1.compareTo(knjiga2);\r
+    }\r
 }\r
 \r
 // Komparator koji daje obrnuti poredak u odnosu na originalni komparator\r
-// koji mu je prosledjen u konstruktoru\r
 class ObrnutiKomparator implements Comparator<Knjiga> {\r
 \r
-       private final Comparator<Knjiga> originalni;\r
+    private final Comparator<Knjiga> originalni;\r
 \r
-       public ObrnutiKomparator(Comparator<Knjiga> originalni) {\r
-               this.originalni = originalni;\r
-       }\r
+    public ObrnutiKomparator(Comparator<Knjiga> originalni) {\r
+        this.originalni = originalni;\r
+    }\r
 \r
-       @Override\r
-       public int compare(Knjiga knjiga1, Knjiga knjiga2) {\r
+    @Override\r
+    public int compare(Knjiga knjiga1, Knjiga knjiga2) {\r
 \r
-               return -originalni.compare(knjiga1, knjiga2);\r
-       }\r
+        return -originalni.compare(knjiga1, knjiga2);\r
+    }\r
 }\r
 \r
-// Komparator koji prvo poredi pomocu primarnog komparatora a potom po\r
-// sekundarnom\r
+// Komparator koji prvo poredi pomocu primarnog komparatora a potom po sekundarnom\r
 class KompozitniKomparator implements Comparator<Knjiga> {\r
 \r
-       private final Comparator<Knjiga> primarni;\r
-       private final Comparator<Knjiga> sekundarni;\r
-\r
-       public KompozitniKomparator(Comparator<Knjiga> primarni,\r
-                       Comparator<Knjiga> sekundarni) {\r
-               this.primarni = primarni;\r
-               this.sekundarni = sekundarni;\r
-       }\r
-\r
-       @Override\r
-       public int compare(Knjiga knjiga1, Knjiga knjiga2) {\r
-               int rezultat = primarni.compare(knjiga1, knjiga2);\r
-               if (rezultat == 0) {\r
-                       rezultat = sekundarni.compare(knjiga1, knjiga2);\r
-               }\r
-               return rezultat;\r
-       }\r
+    private final Comparator<Knjiga> primarni;\r
+    private final Comparator<Knjiga> sekundarni;\r
+\r
+    public KompozitniKomparator(Comparator<Knjiga> primarni,\r
+            Comparator<Knjiga> sekundarni) {\r
+        this.primarni = primarni;\r
+        this.sekundarni = sekundarni;\r
+    }\r
+\r
+    @Override\r
+    public int compare(Knjiga knjiga1, Knjiga knjiga2) {\r
+        int rezultat = primarni.compare(knjiga1, knjiga2);\r
+        if (rezultat == 0) {\r
+            rezultat = sekundarni.compare(knjiga1, knjiga2);\r
+        }\r
+        return rezultat;\r
+    }\r
 }\r
 \r
 // Komparator koji poredi po autoru, a za iste autore, po naslovu\r
 class KomparatorPoAutoruIPotomNaslovu extends KompozitniKomparator {\r
 \r
-       public KomparatorPoAutoruIPotomNaslovu() {\r
-               super(new KomparatorPoAutoru(), new KomparatorPoNaslovu());\r
-       }\r
+    public KomparatorPoAutoruIPotomNaslovu() {\r
+        super(new KomparatorPoAutoru(), new KomparatorPoNaslovu());\r
+    }\r
 }\r
index dfdad73217d708c836e23ae5d46643153541c9ca..02a970842a118049004be312c053289ef2db4c7c 100644 (file)
@@ -32,7 +32,7 @@ drugi parametar tipa Comparator ciji metod `compare` ce se onda pozivati u
 kodu umesto `compareTo` na objektu.  Na primer
 
    //umesto
-   if (o.compareTo(o2)>0) 
+   if (o.compareTo(o2)>0)
    //koristiti
    if (comp.compare(o,o2)>0)
 
@@ -73,7 +73,7 @@ sortiran i da je u njemu K najmanjih elemenata. U
 nesortiranom delu niza nadjemo najmanji element i postavimo
 ga na pocetak nesortiranog dela.
 
-       
+
 Sortiranje razmenom (exchange)
 ------------------------------------------------------------
 
@@ -95,5 +95,5 @@ veliki, odnosno ako je operacija poredjenja brza od
 premestanja elemenata u nizu.
 
 Sortiranje umetanjem daje najbolje rezultate ukoliko su
-elementi niza mali ili je poredjenje komplikovano, tj ako 
+elementi niza mali ili je poredjenje komplikovano, tj ako
 je premestanje brze od poredjenja.
index 715825ca9ee26eb00f1789128a385e853f31ef06..fb8e98750341370a80639ca0e65989b7a8b0260a 100644 (file)
@@ -7,68 +7,68 @@ import java.util.Comparator;
 import org.svetovid.io.SvetovidReader;\r
 \r
 /**\r
- * Klasa opisuje jednu stavku u rasporedu - odnosno jedno konkretno predavanje/vezbe, \r
+ * Klasa opisuje jednu stavku u rasporedu - odnosno jedno konkretno predavanje/vezbe,\r
  * prestavljeno svojim danom pocetnim i krajnjim satom, salom, predmetom i godinom\r
  * studija studenta koji treba da slusaju to predavanje.\r
  */\r
 class Stavka implements Comparable<Stavka> {\r
 \r
-       private String predmet, sala;\r
-       private int dan, pocetak, kraj, godina;\r
-\r
-       public Stavka(int dan, int pocetak, int kraj, String sala, int godina,\r
-                       String predmet) {\r
-               this.dan = dan;\r
-               this.pocetak = pocetak;\r
-               this.kraj = kraj;\r
-               this.sala = sala;\r
-               this.godina = godina;\r
-               this.predmet = predmet;\r
-       }\r
-\r
-       @Override\r
-       public String toString() {\r
-               return getDan() + " " + getPocetak() + "-" + getKraj() + "\t " + getSala() + " ("\r
-                               + getGodina() + " godina) " + predmet;\r
-       }\r
-\r
-       @Override\r
-       public int compareTo(Stavka that) {\r
-               int rez = this.getDan() - that.getDan();\r
-               \r
-               if (rez == 0) {\r
-                       rez = this.getPocetak() - that.getPocetak();\r
-                       \r
-                       if (rez == 0) {\r
-                               rez = this.getSala().compareTo(that.getSala());\r
-                       }\r
-               }               \r
-               return rez;\r
-       }\r
-\r
-       public int getGodina() {\r
-               return godina;\r
-       }\r
-\r
-       public int getDan() {\r
-               return dan;\r
-       }\r
-\r
-       public int getPocetak() {\r
-               return pocetak;\r
-       }\r
-\r
-       public String getSala() {\r
-               return sala;\r
-       }\r
-\r
-       public int getKraj() {\r
-               return kraj;\r
-       }\r
-\r
-       public String getPredmet() {\r
-               return predmet;\r
-       }\r
+    private String predmet, sala;\r
+    private int dan, pocetak, kraj, godina;\r
+\r
+    public Stavka(int dan, int pocetak, int kraj, String sala, int godina,\r
+            String predmet) {\r
+        this.dan = dan;\r
+        this.pocetak = pocetak;\r
+        this.kraj = kraj;\r
+        this.sala = sala;\r
+        this.godina = godina;\r
+        this.predmet = predmet;\r
+    }\r
+\r
+    @Override\r
+    public String toString() {\r
+        return getDan() + " " + getPocetak() + "-" + getKraj() + "\t " + getSala() + " ("\r
+                + getGodina() + " godina) " + predmet;\r
+    }\r
+\r
+    @Override\r
+    public int compareTo(Stavka that) {\r
+        int rez = this.getDan() - that.getDan();\r
+\r
+        if (rez == 0) {\r
+            rez = this.getPocetak() - that.getPocetak();\r
+\r
+            if (rez == 0) {\r
+                rez = this.getSala().compareTo(that.getSala());\r
+            }\r
+        }\r
+        return rez;\r
+    }\r
+\r
+    public int getGodina() {\r
+        return godina;\r
+    }\r
+\r
+    public int getDan() {\r
+        return dan;\r
+    }\r
+\r
+    public int getPocetak() {\r
+        return pocetak;\r
+    }\r
+\r
+    public String getSala() {\r
+        return sala;\r
+    }\r
+\r
+    public int getKraj() {\r
+        return kraj;\r
+    }\r
+\r
+    public String getPredmet() {\r
+        return predmet;\r
+    }\r
 }\r
 \r
 /**\r
@@ -76,182 +76,182 @@ class Stavka implements Comparable<Stavka> {
  */\r
 public class Raspored {\r
 \r
-       public static void main(String[] args) {\r
-\r
-               // Ucitavanje automobila\r
-               String fajl = "r.txt";//Svetovid.in.readLine("Unesite ime fajla:");\r
-               Stavka[] niz = ucitajStavke(fajl);\r
-\r
-               // Ako nismo uspesno ucitali niz, zvrsavamo program\r
-               if (niz == null) {\r
-                       Svetovid.out\r
-                                       .println("Dati fajl nije mogao da se procita! Proverite da li postoji.");\r
-                       return;\r
-               }\r
-\r
-               // Stampanje ucitanog niza\r
-               Svetovid.out.println("Originalni niz");\r
-               stampajNiz(niz);\r
-\r
-               Svetovid.out.println();\r
-               Svetovid.out.println("Odaberite po cemu treba sortirati niz:");\r
-               Svetovid.out.println("1 po imenu predmeta");\r
-               Svetovid.out.println("2 po godini studija, danu i satima");\r
-               Svetovid.out.println("3 po salama, danu i satu");\r
-               Svetovid.out.println("4 po duzini predavanja");\r
-               Svetovid.out.println("5 po danima, satima, salama");\r
-               \r
-               int opcija = Svetovid.in.readInt();\r
-               \r
-               if (opcija <1 || opcija >5) {\r
-                       // prekidamo rad\r
-                       Svetovid.out.println("nije odabrana validna opcija");\r
-                       Svetovid.out.println("kraj programa");\r
-                       return;\r
-               }\r
-               \r
-               Comparator<Stavka> komp = null;\r
-               switch (opcija) {\r
-               case 1:\r
-                       komp = new KomparatorPoPredmetima();\r
-                       break;\r
-               case 2:\r
-                       komp = new KomparatorPoGodinama();\r
-                       break;\r
-               case 3:\r
-                       komp = new KomparatorPoSalama();\r
-                       break;\r
-               case 4:\r
-                       komp = new KomparatorPoDuziniPredavanja();\r
-                       break;\r
-               case 5:\r
-                       // ako prosledimo null komparator bice sortirano\r
-                       // po "prirodnom" uredjenju, tj sa compareTo\r
-                       komp = null;\r
-                       break;\r
-               }\r
-               \r
-               // Sortiranje niza po drugom kriterijumu\r
-               Svetovid.out.println();\r
-               Svetovid.out.println("Niz sortiran komparatorom");\r
-               sortirajNiz(niz, komp);\r
-               stampajNiz(niz);\r
-\r
-       }\r
-\r
-       public static Stavka[] ucitajStavke(String fajl) {\r
-\r
-               // Ako ne mozemo da otvorimo fajl, ne ucitavamo nista\r
-               if (!Svetovid.testIn(fajl)) {\r
-                       return null;\r
-               }\r
-\r
-               SvetovidReader in = Svetovid.in(fajl);\r
-\r
-               // Koliko ima stavki u fajlu?\r
-               int br = in.readInt();\r
-\r
-               // Napravimo niz odgovarajuce velicine\r
-               Stavka[] rez = new Stavka[br];\r
-\r
-               // Ucitamo stavke\r
-               for (int i = 0; i < br; i++) {\r
-                       //preskacemo prazan red\r
-                       in.readLine();\r
-                       \r
-                       // Ucitamo podatke\r
-                       int dan = in.readInt();\r
-                       int pocetak = in.readInt();\r
-                       int kraj = in.readInt();\r
-                       String sala = in.readLine();\r
-                       int godina = in.readInt();\r
-                       String predmet = in.readLine();\r
-\r
-                       Stavka red = new Stavka(dan, pocetak, kraj, sala, godina, predmet);\r
-\r
-                       rez[i] = red;\r
-               }\r
-\r
-               // Zatvorimo fajl\r
-               Svetovid.closeIn(fajl);\r
-\r
-               // Vratimo ucitani niz\r
-               return rez;\r
-\r
-       }\r
-\r
-       public static void stampajNiz(Stavka[] niz) {\r
-               for (Stavka a : niz) {\r
-                       Svetovid.out.println(a);\r
-               }\r
-       }\r
-\r
-       public static void sortirajNiz(Stavka[] niz) {\r
-               // Sortiramo niz pomocu ugradjenog metoda\r
-               // koristi se compareTo iz klase\r
-               Arrays.sort(niz);\r
-       }\r
-\r
-       public static void sortirajNiz(Stavka[] niz, Comparator<Stavka> komparator) {\r
-               // Sortiramo niz pomocu ugradjenog metoda, a koristeci nas komparator\r
-               Arrays.sort(niz, komparator);\r
-       }\r
-\r
-       static class KomparatorPoPredmetima implements Comparator<Stavka> {\r
-\r
-               @Override\r
-               public int compare(Stavka a1, Stavka a2) {\r
-                       int rezultat = a1.getPredmet().compareTo(a2.getPredmet());\r
-                       return rezultat;\r
-               }\r
-       }\r
-       \r
-       static class KomparatorPoGodinama implements Comparator<Stavka> {\r
-\r
-               @Override\r
-               public int compare(Stavka a1, Stavka a2) {\r
-                       int rezultat = a1.getGodina() - a2.getGodina();\r
-\r
-                       if (rezultat == 0) {\r
-                               rezultat = a1.getDan() - a2.getDan();\r
-                               \r
-                               if (rezultat == 0) {\r
-                                       rezultat = a1.getPocetak() - a2.getPocetak();\r
-                               }\r
-                       }\r
-\r
-                       // Vratimo izracunati rezultat poredjenja\r
-                       return rezultat;\r
-               }\r
-       }\r
-\r
-       static class KomparatorPoSalama implements Comparator<Stavka> {\r
-\r
-               @Override\r
-               public int compare(Stavka a1, Stavka a2) {\r
-                       int rezultat = a1.getSala().compareTo(a2.getSala());\r
-\r
-                       if (rezultat == 0) {\r
-                               rezultat = a1.getDan() - a2.getDan();\r
-                               \r
-                               if (rezultat == 0) {\r
-                                       rezultat = a1.getPocetak() - a2.getPocetak();\r
-                               }\r
-                       }\r
-\r
-                       // Vratimo izracunati rezultat poredjenja\r
-                       return rezultat;\r
-               }\r
-       }\r
-       \r
-       static class KomparatorPoDuziniPredavanja implements Comparator<Stavka> {\r
-\r
-               @Override\r
-               public int compare(Stavka a1, Stavka a2) {\r
-                       int rezultat = a1.getKraj() - a1.getPocetak() - a2.getKraj() + a2.getPocetak();\r
-\r
-                       // Vratimo izracunati rezultat poredjenja\r
-                       return rezultat;\r
-               }\r
-       }\r
+    public static void main(String[] args) {\r
+\r
+        // Ucitavanje automobila\r
+        String fajl = "r.txt";//Svetovid.in.readLine("Unesite ime fajla:");\r
+        Stavka[] niz = ucitajStavke(fajl);\r
+\r
+        // Ako nismo uspesno ucitali niz, zvrsavamo program\r
+        if (niz == null) {\r
+            Svetovid.out\r
+                    .println("Dati fajl nije mogao da se procita! Proverite da li postoji.");\r
+            return;\r
+        }\r
+\r
+        // Stampanje ucitanog niza\r
+        Svetovid.out.println("Originalni niz");\r
+        stampajNiz(niz);\r
+\r
+        Svetovid.out.println();\r
+        Svetovid.out.println("Odaberite po cemu treba sortirati niz:");\r
+        Svetovid.out.println("1 po imenu predmeta");\r
+        Svetovid.out.println("2 po godini studija, danu i satima");\r
+        Svetovid.out.println("3 po salama, danu i satu");\r
+        Svetovid.out.println("4 po duzini predavanja");\r
+        Svetovid.out.println("5 po danima, satima, salama");\r
+\r
+        int opcija = Svetovid.in.readInt();\r
+\r
+        if (opcija <1 || opcija >5) {\r
+            // prekidamo rad\r
+            Svetovid.out.println("nije odabrana validna opcija");\r
+            Svetovid.out.println("kraj programa");\r
+            return;\r
+        }\r
+\r
+        Comparator<Stavka> komp = null;\r
+        switch (opcija) {\r
+        case 1:\r
+            komp = new KomparatorPoPredmetima();\r
+            break;\r
+        case 2:\r
+            komp = new KomparatorPoGodinama();\r
+            break;\r
+        case 3:\r
+            komp = new KomparatorPoSalama();\r
+            break;\r
+        case 4:\r
+            komp = new KomparatorPoDuziniPredavanja();\r
+            break;\r
+        case 5:\r
+            // ako prosledimo null komparator bice sortirano\r
+            // po "prirodnom" uredjenju, tj sa compareTo\r
+            komp = null;\r
+            break;\r
+        }\r
+\r
+        // Sortiranje niza po drugom kriterijumu\r
+        Svetovid.out.println();\r
+        Svetovid.out.println("Niz sortiran komparatorom");\r
+        sortirajNiz(niz, komp);\r
+        stampajNiz(niz);\r
+\r
+    }\r
+\r
+    public static Stavka[] ucitajStavke(String fajl) {\r
+\r
+        // Ako ne mozemo da otvorimo fajl, ne ucitavamo nista\r
+        if (!Svetovid.testIn(fajl)) {\r
+            return null;\r
+        }\r
+\r
+        SvetovidReader in = Svetovid.in(fajl);\r
+\r
+        // Koliko ima stavki u fajlu?\r
+        int br = in.readInt();\r
+\r
+        // Napravimo niz odgovarajuce velicine\r
+        Stavka[] rez = new Stavka[br];\r
+\r
+        // Ucitamo stavke\r
+        for (int i = 0; i < br; i++) {\r
+            //preskacemo prazan red\r
+            in.readLine();\r
+\r
+            // Ucitamo podatke\r
+            int dan = in.readInt();\r
+            int pocetak = in.readInt();\r
+            int kraj = in.readInt();\r
+            String sala = in.readLine();\r
+            int godina = in.readInt();\r
+            String predmet = in.readLine();\r
+\r
+            Stavka red = new Stavka(dan, pocetak, kraj, sala, godina, predmet);\r
+\r
+            rez[i] = red;\r
+        }\r
+\r
+        // Zatvorimo fajl\r
+        Svetovid.closeIn(fajl);\r
+\r
+        // Vratimo ucitani niz\r
+        return rez;\r
+\r
+    }\r
+\r
+    public static void stampajNiz(Stavka[] niz) {\r
+        for (Stavka a : niz) {\r
+            Svetovid.out.println(a);\r
+        }\r
+    }\r
+\r
+    public static void sortirajNiz(Stavka[] niz) {\r
+        // Sortiramo niz pomocu ugradjenog metoda\r
+        // koristi se compareTo iz klase\r
+        Arrays.sort(niz);\r
+    }\r
+\r
+    public static void sortirajNiz(Stavka[] niz, Comparator<Stavka> komparator) {\r
+        // Sortiramo niz pomocu ugradjenog metoda, a koristeci nas komparator\r
+        Arrays.sort(niz, komparator);\r
+    }\r
+\r
+    static class KomparatorPoPredmetima implements Comparator<Stavka> {\r
+\r
+        @Override\r
+        public int compare(Stavka a1, Stavka a2) {\r
+            int rezultat = a1.getPredmet().compareTo(a2.getPredmet());\r
+            return rezultat;\r
+        }\r
+    }\r
+\r
+    static class KomparatorPoGodinama implements Comparator<Stavka> {\r
+\r
+        @Override\r
+        public int compare(Stavka a1, Stavka a2) {\r
+            int rezultat = a1.getGodina() - a2.getGodina();\r
+\r
+            if (rezultat == 0) {\r
+                rezultat = a1.getDan() - a2.getDan();\r
+\r
+                if (rezultat == 0) {\r
+                    rezultat = a1.getPocetak() - a2.getPocetak();\r
+                }\r
+            }\r
+\r
+            // Vratimo izracunati rezultat poredjenja\r
+            return rezultat;\r
+        }\r
+    }\r
+\r
+    static class KomparatorPoSalama implements Comparator<Stavka> {\r
+\r
+        @Override\r
+        public int compare(Stavka a1, Stavka a2) {\r
+            int rezultat = a1.getSala().compareTo(a2.getSala());\r
+\r
+            if (rezultat == 0) {\r
+                rezultat = a1.getDan() - a2.getDan();\r
+\r
+                if (rezultat == 0) {\r
+                    rezultat = a1.getPocetak() - a2.getPocetak();\r
+                }\r
+            }\r
+\r
+            // Vratimo izracunati rezultat poredjenja\r
+            return rezultat;\r
+        }\r
+    }\r
+\r
+    static class KomparatorPoDuziniPredavanja implements Comparator<Stavka> {\r
+\r
+        @Override\r
+        public int compare(Stavka a1, Stavka a2) {\r
+            int rezultat = a1.getKraj() - a1.getPocetak() - a2.getKraj() + a2.getPocetak();\r
+\r
+            // Vratimo izracunati rezultat poredjenja\r
+            return rezultat;\r
+        }\r
+    }\r
 }\r
index 38062547bc9e2a38c9f04de1eca6290812b0d599..8b5b91949252db74b19752eb3d12a7d8bb437995 100644 (file)
@@ -28,7 +28,7 @@ s61
 4
 Konstrukcija kompajlera
 
-1 
+1
 19
 21
 s65
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner