zdravím,
dostal jsem za úkol napsat kód pro kvadratickou rovnici s intervaly. Zvládl jsem si vypočítat diskriminant a oba kořeny, ale nějak se mi nedaří vyřešit podmínky pro ty intervaly (zůstává mi to vyset v cyklech). Kdyby byl někdo ochotný poradit, budu za to vděčný.
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// načítání hodnot od uživatele
System.out.print("Zadej koeficient a: ");//načtení koeficient a
double a = sc.nextDouble();
System.out.print("Zadej koeficient b: ");//načtení koeficient b
double b = sc.nextDouble();
System.out.print("Zadej koeficient c: ");//načtení koeficient c
double c = sc.nextDouble();
System.out.print("Zadej pocatek intervalu x1: ");//načtení intervalu x1
double Ix1 = sc.nextDouble();
System.out.print("Zadej konec intervalu x2: ");//načtení intervalu x1
double Ix2 = sc.nextDouble();
double d = b * b - 4 * (a) * (c); // počítání diskriminantu
double x1 = ((-b) + Math.sqrt(d)) / 2 * a; // počítání x1
double x2 = ((-b) - Math.sqrt(d)) / 2 * a; // počítání x2
if (a == 0 && b == 0 && c == 0) {
System.out.println("reseni: neexistuje");
} else {
if (a == 0) {
if (b == 0) {
System.out.println("reseni: neexistuje");
}
} else {
if (d > 0) {
if ((x1 >= Ix1 && x1 <= Ix2) || (x2 >= Ix1 && x2 <= Ix2)) {
if ((x1 >= Ix1 && x1 <= Ix2) && (x2 >= Ix1 && x2 <= Ix2)) {
System.out.println("reseni: existuji dve");
} else {
System.out.println("reseni: existuje jedno");
}
}
} else {
if (d == 0) {
if ((x1 >= Ix1 && x1 <= Ix2) || (x2 >= Ix1 && x2 <= Ix2)) {
if ((x1 >= Ix1 && x1 <= Ix2) && (x2 >= Ix1 && x2 <= Ix2)) {
System.out.println("reseni: existuji dve");
} else {
System.out.println("reseni: existuje jedno");
}
}
else {
System.out.println("reseni: neexistuje");
}
}
}
}
}
}
}