From baff8a471d6d5dc0ebbebbc33777c35bb3847d7c Mon Sep 17 00:00:00 2001 From: Ivan Pribela Date: Sun, 1 Nov 2015 15:57:34 +0100 Subject: [PATCH] Sortiranje, Domaci, dodat prvi zadatak za mozganje --- .../Za mozganje/DomaciZadatakZaMozganje1.java | 113 ++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 sortiranje/Domaci zadaci/Za mozganje/DomaciZadatakZaMozganje1.java diff --git a/sortiranje/Domaci zadaci/Za mozganje/DomaciZadatakZaMozganje1.java b/sortiranje/Domaci zadaci/Za mozganje/DomaciZadatakZaMozganje1.java new file mode 100644 index 0000000..f448799 --- /dev/null +++ b/sortiranje/Domaci zadaci/Za mozganje/DomaciZadatakZaMozganje1.java @@ -0,0 +1,113 @@ +import java.util.Arrays; +import java.util.Comparator; + +/* + * Sortiranje + * Domaci zadatak za mozganje #1 + * + * a) Zasto ovaj program ne sortira niz datuma kako se ocekuje? + * b) Kako popraviti program? + */ + +// Tip podataka +class Datum { + + public final Integer dan; + public final Integer mesec; + public final Integer godina; + + public Datum(String datum) { + + // Razdvojimo string oko tacaka + String[] komponente = datum.split("\\."); + + // Konvertujemo stringove u brojeve + dan = Integer.valueOf(komponente[0]); + mesec = Integer.valueOf(komponente[1]); + godina = Integer.valueOf(komponente[2]); + + } + + @Override + public String toString() { + return dan + "." + mesec + "." + godina + "."; + } +} + +public class DomaciZadatakZaMozganje1 { + + public static void main(String[] args) { + + // Kreiramo niz datuma + Datum[] datumi = new Datum[] { + new Datum("11.4.2015."), + new Datum("12.5.2013."), + new Datum("21.5.2015."), + new Datum("11.4.2014."), + new Datum("14.4.2015."), + new Datum("14.4.2014."), + new Datum("21.4.2015."), + new Datum("12.5.2014."), + new Datum("11.4.2013."), + new Datum("12.5.2015."), + new Datum("14.4.2013."), + new Datum("16.5.2015.") + }; + + // Odstampamo niz + Svetovid.out.println("Originalni niz:"); + for (Datum datum : datumi) { + Svetovid.out.println(datum); + } + + // Sortiramo niz + Arrays.sort(datumi, new KomparatorDatuma()); + + // Ponovo odstampamo niz + Svetovid.out.println("Sortirani niz:"); + for (Datum datum : datumi) { + Svetovid.out.println(datum); + } + + } +} + +class KomparatorDatuma implements Comparator { + + private Comparator komparator = new ObrnutiKomparatorBrojeva(); + + @Override + public int compare(Datum datum1, Datum datum2) { + + // Prvo poredimo godine + int rezultat = komparator.compare(datum1.godina, datum2.godina); + + // Ako su godine jednake, poredimo mesece + if (rezultat == 0) { + rezultat = komparator.compare(datum1.mesec, datum2.mesec); + } + + // Ako su i meseci jednaki poredimo dane + if (rezultat == 0) { + rezultat = komparator.compare(datum1.dan, datum2.dan); + } + + // Vratimo rezultat poredjenja + return rezultat; + + } +} + +class ObrnutiKomparatorBrojeva implements Comparator { + + @Override + public int compare(Integer int1, Integer int2) { + if (int1 == int2) { + return 0; + } else if (int1 < int2) { + return 1; + } else { + return -1; + } + } +} -- 2.17.1