01/10/2018, 17:21
Tìm lỗi sai code giải pt trùng phương
public static void main(String[] args) {
//nhap du lieu cho cac bien
Scanner sc = new Scanner(System.in);
System.out.print("nhap a = ");
int a = sc.nextInt();
System.out.print("nhap b = ");
int b = sc.nextInt();
System.out.print("nhap c = ");
int c = sc.nextInt();
double t1, t2, x2, x3, x4;
double delta = Math.pow(b, 2) - (4 * a * c);
if (delta < 0) {
System.out.print("phuong trinh vo nghiem
");
} else {
if (delta == 0) {
t1 = -b / (2 * a);
t2 = t1;
if (t1 < 0 && t2 < 0) {
System.out.print("phuong trinh vo nghiem
");
} else {
if (t1 >= 0) {
double x1 = Math.sqrt(t1);
x2 = -x1;
System.out.println("x1 = " + x1);
System.out.println("x2 = " + x2);
}
if (t2 >= 0) {
x3 = Math.sqrt(t2);
x4 = -x3;
System.out.println("x3 = " + x3);
System.out.println("x4 = " + x4);
}
}
}
}if (delta>0){t1 = (-b+Math.sqrt(delta))/ (2 * a);
t2 = (-b-Math.sqrt(delta))/ (2 * a);
if (t1 < 0 && t2 < 0) {
System.out.print("phuong trinh vo nghiem
");
} else {
if (t1 >= 0) {
double x1 = Math.sqrt(t1);
x2 = -x1;
System.out.println("x1 = " + x1);
System.out.println("x2 = " + x2);
}
if (t2 >= 0) {
x3 = Math.sqrt(t2);
x4 = -x3;
System.out.println("x3 = " + x3);
System.out.println("x4 = " + x4);
}
}
}
}}
em đã thử đúng mọi phương án nhưng giải pt giải nghiệm không được ạ, cứ x1 =0, x2=0 , các bro giúp e với
Bài liên quan





PT Trùng phương có phải là PT bậc 4
(a.x^4 + b.x^2 + c = 0)đúng không nhỉ ? Vậy theo mình nhớ cách giải như sau:t = x^2=> PT trở thành:a.t^2 +b.t + c = 0.Mình chạy code của bạn thì không thấy có vấn đề gì cả (có thể là do mình chưa chạy hết các trường hợp có thể). Nhưng mình thấy đoạn code của bạn có rất nhiều lỗi sai và một số đoạn chưa được Clean cho lắm Có lẽ chính về mấy lỗi này mà bạn bị sai
Mấy cái này không cần khai báo trước đâu.
Tại sao phải thêm biến t2 nữa trong khi 2 cái này bằng nhau ? Chỉ cần 1 biến
t1thôi và bỏ luôn đoạnMà bạn đã có 1 đoạn
if(t1 < 0)rồi thì tại sao ởelselại phải kiểm tra xem nó có>=0nữa @@Sau khi tính ra
dentathì sẽ dùngif elseđể kiểm tra điều kiện đúng không? Nhưng theo đoạn code của bạn là :Nhưng như vậy thì sẽ bị thừa một cái
ifở cuối @@ Tại sao không phải là:Ngoài ra mình cũng muốn đưa ra một hướng khác để giải quyết bài toàn này một cách “hoàn hảo” hơn
Bạn hãy viết một
voidđể trả về mộtArray or ArrayListchứa các nghiệm của PT. Làm như vậy sẽ giúp bạn biết được là có chính xác bao nhiều nghiệm để in ra đẹp mắt hơn. Nhỡ đâut1 < 0màt2 > 0thì nó lại in raNhưng mà đã có x1, x2 đâu đúng không
Nếu bạn có gì thắc mắc thì cứ Reply ở dưới và nếu có trường hợp nào mà nó in ra nghiệm sai thì cũng đăng lên để mọi người xem nhé