Untitled
unknown
plain_text
3 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...