Untitled

 avatar
unknown
plain_text
2 years ago
4.1 kB
5
Indexable
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;

public class Uloha {
    public static void main(String[] args) {
        double[] kurzyPole = {2.10, 4.16, 2.37, 4.17, 3.62, 1.14, 1.98, 3.15, 1.51, 2.91};
        double[] castkyPole = {0.20, 0.20, 0.20, 0.20, 0.20, 0.20, 0.20, 0.20, 0.20, 0.20};
        List<BigDecimal> kurzyList = new ArrayList<>();
        List<BigDecimal> castkyList = new ArrayList<>();

        for (int i = 0; i < kurzyPole.length; i++) {
            kurzyList.add(i, BigDecimal.valueOf(kurzyPole[i]).setScale(2, RoundingMode.HALF_EVEN));
        }

        for (int i = 0; i < castkyPole.length; i++) {
            castkyList.add(i, BigDecimal.valueOf(castkyPole[i]).setScale(2, RoundingMode.HALF_EVEN));
        }

        for (BigDecimal bigDecimal : kurzyList) {
            if (bigDecimal.compareTo(BigDecimal.ONE) <= 0) {
                System.out.println("Neplatny input! Kurz je rovny alebo mensi ako 1.");
                return;
            }
        }

        for (BigDecimal bigDecimal : castkyList) {
            if (bigDecimal.compareTo(BigDecimal.ZERO) <= 0) {
                System.out.println("Neplatny input! Nulova castka.");
                return;
            }
        }

        Vysledky.celkovyVklad = new BigDecimal("0.00");
        BigDecimal celkovaVyhra = new BigDecimal("0.00");
        List<Skupina> skupiny = new ArrayList<>();

        for (int aku = 1; aku < castkyList.size() + 1; aku++) {
            List<int[]> kombo;
            kombo = genKombinacie(kurzyList.size(), aku);
            BigDecimal vyhraSkupinaSum = new BigDecimal("0.00");

            for (int[] ints : kombo) {
                BigDecimal kurz = new BigDecimal("1.00");
                Skupina skupina = new Skupina();

                for (int i : ints) {
                    System.out.print((char) (i + 65));
                    kurz = kurz.multiply(kurzyList.get(i));
                }

                Skupina.nazov = ints;
                Skupina.kurz = kurz.setScale(2, RoundingMode.HALF_EVEN);
                Skupina.castka = castkyList.get(aku - 1).setScale(2, RoundingMode.HALF_EVEN);
                Skupina.vyhra = (Skupina.kurz).multiply(castkyList.get(aku - 1)).setScale(4, RoundingMode.HALF_EVEN);
                skupiny.add(skupina);
                vyhraSkupinaSum = (vyhraSkupinaSum.add(Skupina.vyhra));

                Vysledky.setCelkovyVklad(Vysledky.celkovyVklad.add(castkyList.get(aku - 1).setScale(2, RoundingMode.HALF_EVEN)));
            }
            System.out.println("Vyhra skupina " + vyhraSkupinaSum);
            celkovaVyhra = celkovaVyhra.add(vyhraSkupinaSum).setScale(2, RoundingMode.HALF_EVEN);
            Vysledky.setCelkovaVyhra(celkovaVyhra);

        }
        Vysledky.setCelkovyKurz(Vysledky.celkovaVyhra.divide(Vysledky.celkovyVklad, 2, RoundingMode.HALF_EVEN));

        System.out.println(Vysledky.celkovaVyhra);
        System.out.println(Vysledky.celkovyVklad);
        System.out.println(Vysledky.celkovyKurz);
        System.out.println(skupiny.get(1));
        System.out.println(skupiny.size());

        System.out.println(Skupina.getVyhra());

        System.out.println(Vysledky.getCelkovaVyhra());


    }

    public static List<int[]> genKombinacie(int pocetPrvkov, int pocetMiest) {
        List<int[]> kombinacie = new ArrayList<>();
        int[] kombinacia = new int[pocetMiest];
        for (int i = 0; i < pocetMiest; i++) {
            kombinacia[i] = i;
        }
        while (kombinacia[pocetMiest - 1] < pocetPrvkov) {
            kombinacie.add(kombinacia.clone());
            int c = pocetMiest - 1;
            while (c != 0 && kombinacia[c] == pocetPrvkov - pocetMiest + c) {
                c--;
            }
            kombinacia[c]++;
            for (int i = c + 1; i < pocetMiest; i++) {
                kombinacia[i] = kombinacia[i - 1] + 1;
            }
        }
        return kombinacie;
    }
}
Editor is loading...