gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control system-/**\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
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
}\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
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
\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
\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
\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
\r
@Override\r
public int compare(Knjiga knjiga1, Knjiga knjiga2) {\r
-\r
return -originalni.compare(knjiga1, knjiga2);\r
}\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
+ public KompozitniKomparator(Comparator<Knjiga> primarni, Comparator<Knjiga> sekundarni) {\r
this.primarni = primarni;\r
this.sekundarni = sekundarni;\r
}\r