Program do rozwiązywania równania kwadratowego

0

Witam wszystkich serdecznie!
Wiem, że tematy o programie pierwiastków równania kwadratowego istnieją ale chodzi mi o coś innego. Ten program nie jest idealny (nie ma np. warunku że gdy A jest 0 to nie jest kwadratowe) ale chodzi mi o obliczenie pierwiastków. Przy różnych wartościach program dobrze oblicza. Natomiast przy wartościach A=3, B=2, C=-5 program źle oblicza. X1 wynosi wtedy 1, a x2 =-1,67. Natomiast program podaje 9 i -15 :/. Przy innych wartościach obliczenia są poprawne.

package pl.eduweb;
import java.util.Scanner;
import static java.lang.Math.*;
public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("To jest program do obliczania pierwiastków równiania kwadratowego Ax^2+Bx+C=0");
        System.out.println("Podaj wartość A:");
        int A = scanner.nextInt();
        System.out.println("Podaj wartość B:");
        int B = scanner.nextInt();
        System.out.println("Podaj wartość C:");
        int C = scanner.nextInt();

        double delta = B*B-4*A*C;
        System.out.println ("Obliczona wartość delty wynosi "+delta);


    if (delta<0){
        System.out.println("Równanie nie ma rozwiązania");
    }
        else if (delta==0){
        int x;
        x=-B/(2*A);
        System.out.println("Równanie ma jedno rozwiązanie. Wynosi " + x);
    }
else if (delta>0){
        double x1, x2;
        x1=(-B+sqrt(delta))/2*A;
        x2=(-B-sqrt(delta))/2*A;
        System.out.println("Równanie ma dwa rozwiązania. Są to x1= "+x1+" oraz x2= "+x2);
    }
    }
}
0

Źle wpisałeś wzory, wyniki są poprawne tylko dla A=1.

1

Nie ma bata że inne rzeczy liczy Ci dobrze. Masz babola przy wyliczaniu miejsc zerowych.

Kolejność wykonywania działań. 3 klasa podstawówki

0
wojciechmaciejewski napisał(a):

Nie ma bata że inne rzeczy liczy Ci dobrze. Masz babola przy wyliczaniu miejsc zerowych.

Kolejność wykonywania działań. 3 klasa podstawówki

Brak nawiasu nie oznacza, że nie znam kolejności wykonywania działań :) Gdybym właśnie nie znał, to pewnie wszystko by mi pasowało :)
Czeski błąd powinno być:
x1=(-B+sqrt(delta))/(2A);
x2=(-B-sqrt(delta))/(2
A);

0

Dlaczego zmienna x jest integer?

0

Wiem wiem, że jest niepoprawnie że powinno być double.

1 użytkowników online, w tym zalogowanych: 0, gości: 1