Для примера возьмём а = 2, b = 6, c = 3. Моя программа выдаёт корни -5.133974596215562 и -6.866025403784438. А калькулятор -0,633974 и 2,366025. Где ошибка в моих расчётах, или я неправильно записал формулу ?
package kostin4_3;
import java.util.Scanner;
import java.lang.Math.*;
public class start {
static double a =0; static double b=0; static double c=0; static double d=0; static double x1=0; static double x2=0;
public static void main(String[] args) {
Dano();
Calc();
}
private static void Calc() {
d = (Math.pow(b, 2)) - (4*a*c);
System.out.print("Ваш дискриминант = " + d);
System.out.println();
if (d < 0) {
System.out.print("У вашего квадратного уравнения нет корней!");
System.out.println();
} if (d == 0) {
x1=-(b/(2*a));
System.out.print("У вашего один корень равный " + x1);
System.out.println();
} else
{
x1=((-b + (Math.sqrt(d))/(2*a)));
x2=((-b - (Math.sqrt(d))/(2*a)));
System.out.print("Первый корень вашего уравнения равен " + x1);
System.out.println() ;
System.out.print("Второй корень вашего уравнения равен " + x2);
System.out.println();
}
}
public static void Dano(){
Scanner scn = new Scanner(System.in);
do {
System.out.print("Введите первый член выражения! (не ноль)!");
a = scn.nextDouble();
if (a !=0) {
System.out.print("Ваш первый член выражения = " + a);
} else { System.out.print("Ну просили же не ноль!"); }
} while (a == 0);
System.out.println();
System.out.print("Введите второй член выражения! ");
b = scn.nextDouble();
System.out.print("Ваш второй член выражения = " + b);
System.out.println();
System.out.print("Введите третий член выражения! ");
c = scn.nextDouble();
System.out.print("Ваш третий член выражения = " + c);
System.out.println();
}
}
Ответ
у вас неправильно расставлены скобки:
x1=((-b + (Math.sqrt(d))/(2*a)));
x2=((-b - (Math.sqrt(d))/(2*a)));
если убрать лишние, то это
x1= -b + Math.sqrt(d)/(2*a);
x2= -b - Math.sqrt(d)/(2*a);
а должно быть
x1= (-b + Math.sqrt(d)) / (2*a);
x2= (-b - Math.sqrt(d)) / (2*a);
Комментариев нет:
Отправить комментарий