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: 1635994)
raw | patch | inline | side by side (parent: 1635994)
author | Ivan Pribela <ivanpribela@gmail.com> | |
Sun, 1 Nov 2015 14:57:34 +0000 (15:57 +0100) | ||
committer | Ivan 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] | patch | blob |
diff --git a/sortiranje/Domaci zadaci/Za mozganje/DomaciZadatakZaMozganje1.java b/sortiranje/Domaci zadaci/Za mozganje/DomaciZadatakZaMozganje1.java
--- /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