| đáp án bài tập 3<đây là cách làm của mình có gì thắc mắc comment cùng thảo luận nhá>....<ai có giải thuật nào hay thì cùng commẻnt và share cho mọi người cùng học hỏi nhá> | |
|
|
Tác giả | Thông điệp |
---|
wind_and_cloud_only
Tổng số bài gửi : 18 Points : 28 Reputation : 0 Join date : 10/07/2009
| Tiêu đề: đáp án bài tập 3<đây là cách làm của mình có gì thắc mắc comment cùng thảo luận nhá>....<ai có giải thuật nào hay thì cùng commẻnt và share cho mọi người cùng học hỏi nhá> 10/7/2009, 10:51 am | |
| - Code:
-
import java.util.Scanner; class PhuongTrinhBac2 { public static void main(String[] args) { //nh?p và in ra a,b,c// Scanner inputData = new Scanner(System.in); //inputData.nextbyte(); int a,b,c; float x1,x2,Delta; System.out.print("\n nh?p a="); a= inputData.nextInt(); System.out.printf("a=%d",a); System.out.print("\n nh?p b="); b=inputData.nextInt(); System.out.printf("b=%d",b); System.out.print("\n nh?p c="); c=inputData.nextInt(); System.out.printf("c=%d",c); //gi?i phuong trình b?c 2// if (a!=0) { Delta=(float)((b*b)-(4*a*c)); System.out.printf("\n Delta=%f",Delta); if(Delta>0) { x1=(float)((-b+Math.sqrt(Delta))/(2*a)); System.out.printf("\n phuong trình có 2 nghi?m x1= "+x1); x2=(float)((-b-Math.sqrt(Delta))/(2*a)); System.out.printf("\n phuong trình có 2 nghi?m x2= "+x2); } if(Delta==0) { float x12; x12=(float)(-b/(2*a)); System.out.printf("\n phuong trình có nghi?m kép x12=x1=x2= "+x12); } else { System.out.printf("\n phuong trình vo nghiem"); } } if(a==0&&b!=0) { float x=(float)(-c/b); System.out.printf("\n phuong trinh co mot nghiem bac 1 x= "+x); } if(a==0&&b==0&&c==0) { System.out.print("\n phuong trình có vo so nghiem"); } } } | |
|
| |
Lee87
Tổng số bài gửi : 71 Points : 107 Reputation : 5 Join date : 10/07/2009 Age : 37 Đến từ : Hà Nội
| Tiêu đề: Re: đáp án bài tập 3<đây là cách làm của mình có gì thắc mắc comment cùng thảo luận nhá>....<ai có giải thuật nào hay thì cùng commẻnt và share cho mọi người cùng học hỏi nhá> 10/7/2009, 6:03 pm | |
| Đây là phương trình bậc 2 nên a không thế bằng 0. nến bài này xét theo điều kiện if(a==0&&b!=0) của cậu là sai rùi. Vì nếu xét theo delta chẳng hạn, nếu như delta > 0 thì phương trình sẽ không thể tính đc nghiệm. nếu là phương trình bấc 2 mình nghĩ bạn nên xét điều kiện a== 0 thì phải báo lỗi. a bắt buộc không thể là 0. Chúc bạn thành công. | |
|
| |
wind_and_cloud_only
Tổng số bài gửi : 18 Points : 28 Reputation : 0 Join date : 10/07/2009
| Tiêu đề: Re: đáp án bài tập 3<đây là cách làm của mình có gì thắc mắc comment cùng thảo luận nhá>....<ai có giải thuật nào hay thì cùng commẻnt và share cho mọi người cùng học hỏi nhá> 10/7/2009, 11:53 pm | |
| Nếu chỉ giải theo a!=0 thì có thể lòng thêm vòng lặp while hay do-while gì đó để loại bỏ trường hợp a=0 khi nhập từ bàn phím...chứ nếu chỉ dùng câu lệnh if else thì pải xét đến đk a=0 nữa chứ?vì lúc nhập từ bàn phím là nhập bất kì, chứ có phải mình biết trước mà nhâp đâu? | |
|
| |
Lee87
Tổng số bài gửi : 71 Points : 107 Reputation : 5 Join date : 10/07/2009 Age : 37 Đến từ : Hà Nội
| Tiêu đề: Re: đáp án bài tập 3<đây là cách làm của mình có gì thắc mắc comment cùng thảo luận nhá>....<ai có giải thuật nào hay thì cùng commẻnt và share cho mọi người cùng học hỏi nhá> 11/7/2009, 1:07 am | |
| - wind_and_cloud_only đã viết:
- Nếu chỉ giải theo a!=0 thì có thể lòng thêm vòng lặp while hay do-while gì đó để loại bỏ trường hợp a=0 khi nhập từ bàn phím...chứ nếu chỉ dùng câu lệnh if else thì pải xét đến đk a=0 nữa chứ?vì lúc nhập từ bàn phím là nhập bất kì, chứ có phải mình biết trước mà nhâp đâu?
- Code:
-
import java.util.Scanner;
public class Ex3 { // Tao ham Input static void Input(){ float a,b,c,d; Scanner input = new Scanner(System.in); //Khoi tao phuong thuc nhap input System.out.print("Nhap a = "); a = input.nextFloat(); // Nhap a System.out.print("\nNhap b = "); b = input.nextFloat(); // Nhap b System.out.print("\nNhap c = "); c = input.nextFloat(); // Nhap c d = (float) (Math.pow(b, 2) - 4 * (a * c)); // Tinh delta if(d<0) System.out.println("\nPhuong trinh da cho vo nghiem."); else{ if(d==0){ System.out.println("\nPhuong trinh da cho co nghiem kep: "); System.out.println("X1 = X2 = "+(-b/(2*a))); } else{ System.out.println("\nPhuong trinh da cho co 2 nghiem phan biet:"); System.out.print("\nX1 = "+((-b+Math.sqrt(d))/(2*a))); // nghiem X1 System.out.print("\nX2 = "+((-b-Math.sqrt(d))/(2*a))); // nghiem X2 } } } // Ham chinh public static void main(String[] chuoi){ Input(); }
}
Vậy bạn chạy thử chương trình này của mình, mình không kiểm tra a, và bạn nhập vào anh chàng a = = 0 xem có hiện tượng j xảy ra nhé. và nếu là phương trình bậc 2 bặt buộc phải có thằng delta, vậy nếu bạn tính delta xem nếu nó phù hợp thì xem nghiệm nó báo cái j nhé. nên theo mình chỉ cần thằgn a ==0 ==>> stop ngay chương trình. không cần tính toán. :idea: | |
|
| |
wind_and_cloud_only
Tổng số bài gửi : 18 Points : 28 Reputation : 0 Join date : 10/07/2009
| Tiêu đề: Re: đáp án bài tập 3<đây là cách làm của mình có gì thắc mắc comment cùng thảo luận nhá>....<ai có giải thuật nào hay thì cùng commẻnt và share cho mọi người cùng học hỏi nhá> 11/7/2009, 9:17 pm | |
| Nếu làm được theo cách của ấy nói cũng hay, nhưng mình chạy thử chương trình ấy làm, nếu mình nhập a=0,b=0,c=1; ctrình sẽ cho kết quả là: Phuong trinh da cho co nghiem kep: X1 = X2 = NaN
Còn nếu mình chạy nó với:
Nhap a = 0
Nhap b = 1
Nhap c = 1
Phuong trinh da cho co 2 nghiem phan biet:
X1 = NaN X2 = -Infinity Process completed. | |
|
| |
wind_and_cloud_only
Tổng số bài gửi : 18 Points : 28 Reputation : 0 Join date : 10/07/2009
| Tiêu đề: Re: đáp án bài tập 3<đây là cách làm của mình có gì thắc mắc comment cùng thảo luận nhá>....<ai có giải thuật nào hay thì cùng commẻnt và share cho mọi người cùng học hỏi nhá> 11/7/2009, 9:19 pm | |
| vì thế nên mình nghĩ phải cài điều kiện cho a, để khi người nhập nhập a=0 thì chương trình yêu cầu nhập lại với a!=0 | |
|
| |
Lee87
Tổng số bài gửi : 71 Points : 107 Reputation : 5 Join date : 10/07/2009 Age : 37 Đến từ : Hà Nội
| Tiêu đề: Re: đáp án bài tập 3<đây là cách làm của mình có gì thắc mắc comment cùng thảo luận nhá>....<ai có giải thuật nào hay thì cùng commẻnt và share cho mọi người cùng học hỏi nhá> 12/7/2009, 9:06 am | |
| - wind_and_cloud_only đã viết:
- vì thế nên mình nghĩ phải cài điều kiện cho a, để khi người nhập nhập a=0 thì chương trình yêu cầu nhập lại với a!=0
I'm agree! :lol: Bạn có thể thêm đoạn mã này vào sau khi nhập a để kiểm tra điều kiện. - Code:
-
do{ if(a==0){ System.out.println("Yeu cau nhap lai:"); System.out.print("\nNhap a = "); a = input.nextFloat(); } else break; }while(true);
| |
|
| |
Sponsored content
| Tiêu đề: Re: đáp án bài tập 3<đây là cách làm của mình có gì thắc mắc comment cùng thảo luận nhá>....<ai có giải thuật nào hay thì cùng commẻnt và share cho mọi người cùng học hỏi nhá> | |
| |
|
| |
| đáp án bài tập 3<đây là cách làm của mình có gì thắc mắc comment cùng thảo luận nhá>....<ai có giải thuật nào hay thì cùng commẻnt và share cho mọi người cùng học hỏi nhá> | |
|