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
t1
thôi và bỏ luôn đoạnMà bạn đã có 1 đoạn
if(t1 < 0)
rồi thì tại sao ởelse
lại phải kiểm tra xem nó có>=0
nữa @@Sau khi tính ra
denta
thì 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 ArrayList
chứ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 < 0
màt2 > 0
thì 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é