gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control system
summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: d68d701)
raw | patch | inline | side by side (parent: d68d701)
author | Ivan Pribela <ivanpribela@gmail.com> | |
Sun, 16 Oct 2016 19:54:07 +0000 (21:54 +0200) | ||
committer | Ivan Pribela <ivanpribela@gmail.com> | |
Sun, 16 Oct 2016 19:54:07 +0000 (21:54 +0200) |
sortiranje/knjige/Biblioteka.java | patch | blob | history | |
sortiranje/knjige/Biblioteka2.java | patch | blob | history |
index b05747273a79e0358a5e0fb4746d547037dee01e..a4e543e9961ab9859c3d46120f8875b41d26008d 100644 (file)
-/**
- * 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;
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;
}
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
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:");
// 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");
}
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?
}
+ // Zatvorimo fajl
+ Svetovid.closeIn(fajl);
+
// Vratimo ucitani niz
return rez;
}
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 0998f983342c782d17418555055073861a4eb1f7..d46a89762a9745b86b6daaada21eef7164453d1f 100644 (file)
-/**\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