gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control systemdiff --git a/sortiranje/knjige/Biblioteka.java b/sortiranje/knjige/Biblioteka.java
--- /dev/null
@@ -0,0 +1,155 @@
+/**
+ * Resenje zadatka sort1 sa vezbi
+ */
+import java.util.Arrays;
+
+import org.svetovid.io.SvetovidReader;
+import org.svetovid.io.SvetovidWriter;
+
+// Klasa koja opisuje jednu knjigu
+class Knjiga implements Comparable<Knjiga> {
+
+ private final int id;
+ private final String naslov;
+ private final String autor;
+
+ public Knjiga(int id, String naslov, String autor) {
+ this.id = id;
+ this.naslov = naslov;
+ 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(){
+ return naslov;
+ }
+
+ public String getAutor() {
+ return autor;
+ }
+
+ public int getId() {
+ return id;
+ }
+}
+
+// Glavni program
+public class Biblioteka {
+
+ public static void main(String[] arguments) {
+
+ // Ucitavanje knjiga iz fajla
+ String fajl = Svetovid.in.readLine("Unesite ime fajla sa knjigama:");
+ Knjiga[] niz = ucitajKnjige(fajl);
+
+ if (niz != null) {
+ // Stampanje ucitanog niza
+ Svetovid.out.println();
+ Svetovid.out.println("Nesortirani niz:");
+ Svetovid.out.println();
+ stampajNiz(niz);
+
+ // Sortiranje niza
+ Arrays.sort(niz);
+
+ // Stampanje sortiranog niza
+ Svetovid.out.println();
+ Svetovid.out.println("Sortirani niz:");
+ Svetovid.out.println();
+ stampajNiz(niz);
+
+ // Ispis knjiga u fajl
+ String izlazni = Svetovid.in.readLine("Unesite ime fajla za ispis:");
+ snimiKnjige(niz,izlazni);
+
+ } else {
+ System.err.println("Greska pri ucitavanju niza, kraj rada");
+ }
+
+ }
+
+ public static Knjiga[] ucitajKnjige(String fajl) {
+
+ // Ako ne mozemo da otvorimo fajl, ne ucitavamo knjige
+ if (!Svetovid.testIn(fajl)) {
+ return null;
+ }
+
+ // Ako mozemo, napravimo precicu 'in' da ne bi morali da
+ // svaki put kuvamo 'Svetovid.in(fajl)'
+ SvetovidReader in = Svetovid.in(fajl);
+
+ // Koliko ima knjiga u fajlu?
+ int br = Svetovid.in(fajl).readInt();
+
+ // Napravimo niz odgovarajuce velicine
+ Knjiga[] rez = new Knjiga[br];
+
+ // Ucitamo knjige
+ for (int i = 0; i < br; i++) {
+
+ // Ucitamo podatke o knjizi
+ int id = in.readInt();
+ String naslov = in.readLine();
+ String autor = in.readLine();
+
+ // Napravimo knjigu
+ Knjiga knjiga = new Knjiga(id, naslov, autor);
+
+ // Dodamo knjigu u niz
+ rez[i] = knjiga;
+
+ }
+
+ // Vratimo ucitani niz
+ return rez;
+
+ }
+
+ public static void stampajNiz(Knjiga[] niz) {
+ for (Knjiga knjiga : niz) {
+ System.out.println(knjiga);
+ }
+ }
+
+ public static void snimiKnjige(Knjiga[] niz, String ime) {
+ if (!Svetovid.testOut(ime)) {
+ // ne mozemo da snimimo, vracamo se
+ System.err.println("Nemoguce snimanje u fajl");
+ return;
+ }
+
+ // napravimo precicu 'out' da ne bi morali da
+ // svaki put pisemo 'Svetovid.out(ime)'
+ SvetovidWriter out = Svetovid.out(ime);
+
+ // pisemo broj knjiga, kao u originalu
+ out.println(niz.length);
+
+ // za svaku knjigu ispisujemo podatke
+ for (Knjiga knjiga : niz) {
+ out.println(knjiga.getId());
+ out.println(knjiga.getNaslov());
+ out.println(knjiga.getAutor());
+ }
+
+ // zatvorimo izlaz
+ out.close();
+
+ }
+}