Untitled
unknown
plain_text
2 years ago
3.9 kB
5
Indexable
public class Uloha { public static void main(String[] args) { double[] kurzyPole = {3.58, 2.07, 2.41, 3.19, 3.44, 4.52, 1.43, 1.32, 1.29, 9.24}; 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; } } List<Skupina> skupiny = new ArrayList<>(); Vysledky.setCelkovaVyhra(BigDecimal.ZERO); Vysledky.setCelkovyVklad(BigDecimal.ZERO); for (int aku = 1; aku < castkyList.size() + 1; aku++) { List<int[]> kombo; BigDecimal vyhraSkupinaSum = BigDecimal.ZERO; kombo = genKombinacie(kurzyList.size(), aku); for (int[] ints : kombo) { BigDecimal kurz = BigDecimal.ONE; for (int j : ints) { kurz = kurz.multiply(kurzyList.get(j)); } Skupina skupina = new Skupina(); skupina.setNazov(intsToString(ints)); skupina.setKurz(kurz.setScale(2, RoundingMode.HALF_EVEN)); skupina.setCastka(castkyList.get(aku - 1)); skupina.setVyhra(skupina.getKurz().multiply(castkyList.get(aku - 1))); skupiny.add(skupina); vyhraSkupinaSum = (vyhraSkupinaSum.add(skupina.getVyhra())); Vysledky.setCelkovyVklad(Vysledky.getCelkovyVklad().add(castkyList.get(aku - 1))); } Vysledky.setCelkovaVyhra(Vysledky.getCelkovaVyhra().add(vyhraSkupinaSum).setScale(4,RoundingMode.HALF_EVEN)); } Vysledky.setCelkovyKurz(Vysledky.getCelkovaVyhra().divide(Vysledky.getCelkovyVklad(), RoundingMode.HALF_EVEN)); for (Skupina skupina : skupiny) { System.out.println(skupina.toString()); } Vysledky vysledky = new Vysledky(); System.out.println(vysledky); } 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; } private static String intsToString(int[] ints) { char[] charsNazov = new char[ints.length]; for (int i = 0; i < charsNazov.length; i++) { charsNazov[i] = (char) (ints[i] + 65); } return Arrays.toString(charsNazov).replaceAll("]","").replaceAll("\\[", "").replaceAll("[\\\\, ]",""); } }
Editor is loading...