gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Sortiranje, Domaci, dodat prvi zadatak za mozganje
authorIvan Pribela <ivanpribela@gmail.com>
Sun, 1 Nov 2015 14:57:34 +0000 (15:57 +0100)
committerIvan Pribela <ivanpribela@gmail.com>
Sun, 1 Nov 2015 14:57:34 +0000 (15:57 +0100)
sortiranje/Domaci zadaci/Za mozganje/DomaciZadatakZaMozganje1.java [new file with mode: 0644]

diff --git a/sortiranje/Domaci zadaci/Za mozganje/DomaciZadatakZaMozganje1.java b/sortiranje/Domaci zadaci/Za mozganje/DomaciZadatakZaMozganje1.java
new file mode 100644 (file)
index 0000000..f448799
--- /dev/null
@@ -0,0 +1,113 @@
+import java.util.Arrays;\r
+import java.util.Comparator;\r
+\r
+/*\r
+ * Sortiranje\r
+ * Domaci zadatak za mozganje #1\r
+ *\r
+ * a) Zasto ovaj program ne sortira niz datuma kako se ocekuje?\r
+ * b) Kako popraviti program?\r
+ */\r
+\r
+// Tip podataka\r
+class Datum {\r
+\r
+    public final Integer dan;\r
+    public final Integer mesec;\r
+    public final Integer godina;\r
+\r
+    public Datum(String datum) {\r
+\r
+        // Razdvojimo string oko tacaka\r
+        String[] komponente = datum.split("\\.");\r
+\r
+        // Konvertujemo stringove u brojeve\r
+        dan = Integer.valueOf(komponente[0]);\r
+        mesec = Integer.valueOf(komponente[1]);\r
+        godina = Integer.valueOf(komponente[2]);\r
+\r
+    }\r
+\r
+    @Override\r
+    public String toString() {\r
+        return dan + "." + mesec + "." + godina + ".";\r
+    }\r
+}\r
+\r
+public class DomaciZadatakZaMozganje1 {\r
+\r
+    public static void main(String[] args) {\r
+\r
+        // Kreiramo niz datuma\r
+        Datum[] datumi = new Datum[] {\r
+                new Datum("11.4.2015."),\r
+                new Datum("12.5.2013."),\r
+                new Datum("21.5.2015."),\r
+                new Datum("11.4.2014."),\r
+                new Datum("14.4.2015."),\r
+                new Datum("14.4.2014."),\r
+                new Datum("21.4.2015."),\r
+                new Datum("12.5.2014."),\r
+                new Datum("11.4.2013."),\r
+                new Datum("12.5.2015."),\r
+                new Datum("14.4.2013."),\r
+                new Datum("16.5.2015.")\r
+        };\r
+\r
+        // Odstampamo niz\r
+        Svetovid.out.println("Originalni niz:");\r
+        for (Datum datum : datumi) {\r
+            Svetovid.out.println(datum);\r
+        }\r
+\r
+        // Sortiramo niz\r
+        Arrays.sort(datumi, new KomparatorDatuma());\r
+\r
+        // Ponovo odstampamo niz\r
+        Svetovid.out.println("Sortirani niz:");\r
+        for (Datum datum : datumi) {\r
+            Svetovid.out.println(datum);\r
+        }\r
+\r
+    }\r
+}\r
+\r
+class KomparatorDatuma implements Comparator<Datum> {\r
+\r
+    private Comparator<Integer> komparator = new ObrnutiKomparatorBrojeva();\r
+\r
+    @Override\r
+    public int compare(Datum datum1, Datum datum2) {\r
+\r
+        // Prvo poredimo godine\r
+        int rezultat = komparator.compare(datum1.godina, datum2.godina);\r
+\r
+        // Ako su godine jednake, poredimo mesece\r
+        if (rezultat == 0) {\r
+            rezultat = komparator.compare(datum1.mesec, datum2.mesec);\r
+        }\r
+\r
+        // Ako su i meseci jednaki poredimo dane\r
+        if (rezultat == 0) {\r
+            rezultat = komparator.compare(datum1.dan, datum2.dan);\r
+        }\r
+\r
+        // Vratimo rezultat poredjenja\r
+        return rezultat;\r
+\r
+    }\r
+}\r
+\r
+class ObrnutiKomparatorBrojeva implements Comparator<Integer> {\r
+\r
+    @Override\r
+    public int compare(Integer int1, Integer int2) {\r
+        if (int1 == int2) {\r
+            return 0;\r
+        } else if (int1 < int2) {\r
+            return 1;\r
+        } else {\r
+            return -1;\r
+        }\r
+    }\r
+}\r
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner