Riešenia (skupina B, 8. týždeň)

public class Bod {

        private double x;
        private double y;

        public Bod() {
                this(0, 0);
        }

        public Bod(Bod bod) {
                this(bod.x, bod.y);
        }

        public Bod(double x, double y) {
                this.x = x;
                this.y = y;
        }

        @Override
        public String toString() {
                return "[" + x + ", " + y + "]";
        }

        public void nastav(Bod bod) {
                nastav(bod.x, bod.y);
        }

        public void nastav(double x, double y) {
                this.x = x;
                this.y = y;
        }

        public boolean rovnakeSuradnice(Bod bod) {

                return bod != null && x == bod.x && y == bod.y;
        }

        public double vzdialenostK(Bod bod) {
                return vzdialenostK(bod.x, bod.y);
        }

        public double vzdialenostK(double x, double y) {
                double x2 = this.x - x;
                x2 *= x2;
                double y2 = this.y - y;
                y2 *= y2;

                return Math.sqrt(x2 + y2);
        }

        void posunO(double dx, double dy) {
                x += dx;
                y += dy;
        }

        public Bod posunutyBod(double dx, double dy) {
                return new Bod(x + dx, y + dy);
        }

        public double getX() {
                return x;
        }

        public void setX(double x) {
                this.x = x;
        }

        public double getY() {
                return y;
        }

        public void setY(double y) {
                this.y = y;
        }
}
public class ZoznamBodov {

        private Bod[] zoznam = new Bod[20];
        private int pocetBodov;

        public int dlzka() {
                return pocetBodov;
        }

        public void pridajBod(Bod bod) {
                if (pocetBodov == zoznam.length)
                        zvacsiZoznam();

                zoznam[pocetBodov++] = bod;
                // ALTERNATIVNE (ked chceme vytvarat kopie)
                // zoznam[pocetBodov++] = new Bod(bod.get
        }

        public Bod dajBod(int index) {
                if (!jeIndexSpravny(index))
                        return null;

                return zoznam[index];
        }

        public void vymaz() {
                pocetBodov = 0;
        }

        @Override
        public String toString() {
                StringBuilder sb = new StringBuilder();
                sb.append("[");
                for (int i = 0; i < pocetBodov; i++) {
                        sb.append(zoznam[i].toString());
                        if (i < pocetBodov - 1) {
                                sb.append(", ");
                        }
                }
                sb.append("]");
                return sb.toString();

        }

        public void odoberBod(int index) {
                if (!jeIndexSpravny(index)) {
                        return;
                }
                for (int i = index; i < pocetBodov - 1; i++) {
                        zoznam[i] = zoznam[i + 1];
                }
                pocetBodov--;
        }

        private void zvacsiZoznam() {
                Bod[] novyZoznam = new Bod[zoznam.length + 20];
                for (int i = 0; i < zoznam.length; i++)
                        novyZoznam[i] = zoznam[i];

                zoznam = novyZoznam;
        }

        private boolean jeIndexSpravny(int index) {
                return index >= 0 && index < pocetBodov;
        }
}
public class KurzovaPolozka {

        private String kodMeny = new String();
        private double kurz = 0;

        public KurzovaPolozka(String kodMeny, double kurz) {
                this.kodMeny = kodMeny;
                this.kurz = kurz;
        }

        public String getKodMeny() {
                return kodMeny;
        }

        public double getKurz() {
                return kurz;
        }
        public void setKurz(double kurz) {
                this.kurz = kurz;
        }
}
public class KurzovyListok {

        private KurzovaPolozka[] polozky = new KurzovaPolozka[20];
        private int pocet;

        public void pridajPolozku(KurzovaPolozka polozka) {
                if (pocet == polozky.length) {
                        KurzovaPolozka[] pomPolozky = new KurzovaPolozka[polozky.length + 20];
                        for (int i = 0; i < polozky.length; i++) {
                                pomPolozky[i] = polozky[i];
                        }
                        polozky = pomPolozky;
                }
                polozky[pocet] = polozka;

        }

        public void nastavKurz(String kodMeny, double kurz) {
                KurzovaPolozka polozka = vratKurzovuPolozku(kodMeny);
                if (polozka != null) {
                        polozka.setKurz(kurz);
                } else {
                        polozka = new KurzovaPolozka(kodMeny, kurz);
                        pridajPolozku(polozka);
                }
        }

        public double vratKurz(String kodMeny) {
                for (int i = 0; i < pocet; i++) {
                        if (kodMeny.equals(polozky[i].getKodMeny())) {
                                return polozky[i].getKurz();
                        }
                }
                return 0;
        }

        public KurzovaPolozka vratKurzovuPolozku(String kodMeny) {
                for (int i = 0; i < pocet; i++) {
                        if (kodMeny.equals(polozky[i].getKodMeny())) {
                                return polozky[i];
                        }
                }
                return null;
        }
}