Tháng Mười Hai 17, 2018
Phương trình bậc 2
Đề bài: Hãy lập trình chương trình giải phương trình bậc 2: với a, b, c nhập từ bàn phím.
Đầu vào: Một dòng gồm 3 số cách nhau bởi dấu cách.
Đầu ra: In ra cho các trường hợp.
1/ “VSN” – Nếu phương trình vô số nghiệm
2/ “VN” – Nếu phương trình vô nghiệm
3/ “x = 2.00” – Nếu phương trình có một nghiệm (Nghiệm 2).
4/ Nếu phương trình có 2 nghiệm, in 2 nghiệm đó trên một dòng và cách nhau bởi dấu cách. Nghiệm nhỏ in trước, nghiệm lớn in sau.
Các nghiệm được làm tròn tới 2 chữ số thập phân.
Ví dụ:
input: 1 -2 1 output: x = 1.00
Bạn chưa đăng nhập? Đăng nhập để Submit ngay!
61 Comments
Add a Comment
Bạn phải đăng nhập để gửi phản hồi.
Bài mình code đúng, chạy đúng mà sao test case có vấn đề. Bạn xem lại test case giúp mình nha.
1. Wrong Answer
Test Input:
1 2 1
Test Output:
x = -1.00
Your Output:
x = -1.00
2. Accepted
3. Accepted
4. Wrong Answer
Test Input:
2 4 2
Test Output:
x = -1.00
Your Output:
x = -1.00
5. Accepted
6. Accepted
7. Accepted
8. Accepted
9. Accepted
10. Accepted
Chào bạn, mình đã xem code của bạn. Code của bạn thừa dấu cách khi xuất ra nhé. Bạn xem kỹ lại 🙂
Cám ơn bạn, để mình xem lại code 🙂
Góp ý ngu tý ad nên cho thêm link cách giải pt bậc 2 chứ google mò hơi nhác :v
:)) cái này phải tự nhớ chứ.
cháu lớp 8 chưa được học chú ơi :<
Vậy làm bài khác hoặc lên mạng tìm hiểu thêm về nó nhé.
Tưởng trong hướng dẫn bác bảo k phải check đầu vào mà sao nhiều đầu vào oái oăm thế. Chơi luôn a=b=0 luôn :v
Nếu đề bài nói điều kiện thì ko cần check. Đề không nói thì bạn cần check chứ.
Đề hơi điêu bác à :v đã là phương trình bậc 2 thì a luôn khác 0 và phương trình bậc 2 chỉ có vô nghiệm hoặc có nghiệm chứ không có vô số nghiệm
No. Phải test mọi trường hợp nhé. Bạn có thấy máy casio nó yêu cầu a khác 0 hem?
mình code đúng rồi mà lại bị lỗi
1. Accepted
2. Accepted
3. Accepted
4. Accepted
5. Accepted
Runtime Error (NZEC)
Exception in thread “main” java.lang.ArithmeticException: divide by zero at Main.main(Main.java:17)
Bạn dịch lỗi ra là biét lõi gì nhé.
Runtime error 200 at $000000000040029F $000000000040029F $000000000040018F
lỗi gì lạ v ad :v
– Nếu a # 0:
– – Tính delta = b^2 – 4ac;
– – Nếu delta PT vô nghiệm
– – Nếu delete = 0 => x = -b/(2a)
– – Nếu deleta > 0 //// >>>>> lời giải thầy viết sai “delta nè =))
1. Accepted
2. Accepted
3. Accepted
4. Accepted
5. Accepted
6. Accepted
Rutime Error (SIGFPE)
Em chưa hiểu báo lỗi như thế này xử lý thế nào luôn
Em đã fix thành công rồi nhé
anh ơi khi em code có x thì hệ thống xuất ra output không có x còn khi em code output không có x hệ thống lại xuất ra output có x ạ.. mong a xem giúp e với.
Test Input:
0 2 1
Test Output:
x = -0.50
Your Output:
-0.50
Test Input:
1 3 2
Test Output:
-2.00 -1.00
Your Output:
x = -2.00 y = -1.00
Bạn phải xem code mình sai ở đâu chứ.
anh cho em hỏi -nan và -inf là gì vậy ạ
Là không có kết quả. thường là phép chia cho số 0 hoặc các phép toán ko hợp lý.
mn cho hỏi test 10 là trường hợp j v đúng 9 test r còn 1 test 10 T^T
Bạn xem sự khác nhau giữa Test output và your output nhé.
nó không ra test inp vs test out s mà xem
Ah, test này a, b, c là các số thực nên bạn bị sai kiểu dữ liệu.
tks ad
cho em hỏi em chạy tới dòng nó báo Runtime Error (SIGFPE) là sao ạ
Trong quá trình chạy có lỗi. (VD chia cho 0)
vẫn sai
Bạn xem sự khác nhau giữa Test output và Your output ở các test sai nhé.
sao output lúc sai máy chấm không hiện gì hết vậy
6. Wrong Answer
Test Input:
0 0 0
Test Output:
VSN
Your Output:
Vì code của bạn in ra giá trị rỗng hoặc không in ra
Anh ơi, cho em hỏi lỗi này là lỗi gì ạ
“main.cpp: In function ‘int main()’: main.cpp:21:37: error: ‘sqrt’ was not declared in this scope printf(“%.2f %.2f”,(-b-sqrt(delta))/(2*a),(-b+sqrt(delta))/(2*a)); ^”
Em chưa có thư viện để dùng lệnh sqrt nhé.
4. Wrong Answer
Test Input:
2 4 2
Test Output:
x = -1.00
Your Output:
-1.00
ad ơi, sao có lúc nó biểu mình in ra là x= -1.00, rồi có lúc nó biểu mình in ra -1.00 thôi
** Ý của em là tại sao có lúc in ra x và có lúc in ra không có x
Đề bài yêu cầu thế nhé.
nhưng mà cái lúc em in ra x, thì nó lại biểu ko in ra x
Bạn đọc kỹ đề bài nhé.
anh ơi cho em hỏi, tại sao khi em xem cái lời giải của anh làm í, thì tại sao -c/b nhỉ
em đang phân vân chỗ đó, -c/b là nghiệm gì anh ?
Học lại cách giải PT bậc 2 nhé. 😛
oh :), thì ra là nếu a=0 thì suy ra x= -c/b, đúng không ad 🙂
cho mình hỏi lỗi test 10: Runtime Error (NZEC)
Runtime error 106 at $00000000004001EB $00000000004001EB $000000000040018F
Là code lỗi nhé.
HomeBài tậpBài tập về If elsePhương trình bậc 2
Phương trình bậc 2By nguyenvanquan7826 Bài tập về If else 41 Comments ☞ Bảng chấm code
KHÔNG IN THỪA, THIẾU so với đầu ra. Hãy đọc hướng dẫn làm bài và code mẫu tại đây nếu bạn đang bị sai hoặc chưa biết cách làm
Đề bài: Hãy lập trình chương trình giải phương trình bậc 2: ax^{2} + bx + c = 0 với a, b, c nhập từ bàn phím.
Đầu vào: Một dòng gồm 3 số cách nhau bởi dấu cách.
Đầu ra: In ra cho các trường hợp.
1/ “VSN” – Nếu phương trình vô số nghiệm
2/ “VN” – Nếu phương trình vô nghiệm
3/ “x = 2.00” – Nếu phương trình có một nghiệm (Nghiệm 2).
4/ Nếu phương trình có 2 nghiệm, in 2 nghiệm đó trên một dòng và cách nhau bởi dấu cách. Nghiệm nhỏ in trước, nghiệm lớn in sau.
Các nghiệm được làm tròn tới 2 chữ số thập phân.
Ví dụ:
input:
1 -2 1
output:
x = 1.00
#include
#include
int main ()
{
float a, b, c, denta;
float x, x1, x2;
scanf(“%f%f%f”, &a, &b, &c);
if(a==0){
if(b==0 && c!=0)
printf (“VN”);
if(b==0 && c==0){
printf (“VSN”);
}
else {
x=(float)-c/b;
printf (“%.2f”, x);
}
}
else{
denta=b*b-4*a*c;
if (denta<0){
printf ("VN");
}
else if(denta==0){
x=(float)-b/(2*a);
printf ("%.2f", x);
}
else {
x1=(float)(-b-sqrt(denta))/(2*a);
x2=(float)(-b+sqrt(denta))/(2*a);
printf ("%.2f %.2f", x1, x2);
}
}
}
1
#include
2
#include
3
int main ()
4
{
5
float a, b, c, denta;
6
float x, x1, x2;
7
scanf(“%f%f%f”, &a, &b, &c);
8
if(a==0){
9
if(b==0 && c!=0){
10
printf (“VN”);
11
}
12
else if(b==0 && c==0){
13
printf (“VSN”);
14
}
15
else {
16
x=(float)-c/b;
17
printf (“%.2f”, x);
18
}
19
}
20
else{
21
denta=b*b-4*a*c;
22
if (denta<0){
23
printf ("VN");
24
}
25
else if(denta==0){
26
x=(float)-b/(2*a);
27
printf ("%.2f", x);
28
}
29
else {
30
x1=(float)(-b-sqrt(denta))/(2*a);
31
x2=(float)(-b+sqrt(denta))/(2*a);
32
printf ("%.2f %.2f", x1, x2);
33
}
34
}
35
}
SubmitXem lời giải của hệ thống
1. Wrong Answer
Test Input:
1 2 1
Test Output:
x = -1.00
Your Output:
-1.00
2. Accepted
3. Accepted
4. Wrong Answer
Test Input:
2 4 2
Test Output:
x = -1.00
Your Output:
-1.00
5. Accepted
6. Accepted
7. Accepted
8. Wrong Answer
Test Input:
0 2 1
Test Output:
x = -0.50
Your Output:
-0.50
9. Wrong Answer
Test Input:
0 2 -3
Test Output:
x = 1.50
Your Output:
1.50
10. Accepted
em đang thắc mắc liệu hệ thống có chấm sai hay không
Bạn xem lại đề nhé. Nhìn sự khác nhau giữa test output và your output.
#include
#include
#include
int main()
{
float a,b,c;
float x,x1,x2;
float d;
printf(“GIAI PHUONG TRINH BAC 2 ax^2 + bx + c = 0\n”);
printf(“Nhap a, b, c\n”);
scanf(“&f&f&f”,&a,&b,&c);
if (a = 0)
{
printf(“\nPhuong trinh co nghiem duy nhat: x = %f”,x = -c/b);
}
else
{
d = pow(b,2)-4*a*c;
if (d < 0)
{
printf("Phuong trinh vo nghiem");
}
else
{
x1 = (b-sqrt(d))/(2*a);
x2 = (-b-sqrt(d))/(2*a);
printf("Phuong trinh co 2 nghiem phan biet\n");
printf("x1 = %f",x1);
printf("x2 = %f",x2);
}
}
getch();
}
Em đã cố gắng thử nhiều cách mà vẫn không hiểu sao lệnh if của em nó ko hoạt động, nó nhảy linh tinh hoài ạ 🙁
Vì bạn viết sai. if (a = 0) or if (a == 0) ?
lúc scanf dùng sai kiểu làm sai bao nhiêu lần haizz phải ra ngoài dùng debug mới xong, mêt v
6. Wrong Answer
Test Input:
0 0 0
Test Output:
VSN
Your Output:
VSN-nan -nan
7. Wrong Answer
Test Input:
0 0 1
Test Output:
VN
Your Output:
VN-nan -nan
8. Wrong Answer
Test Input:
0 2 1
Test Output:
x = -0.50
Your Output:
-0.50-inf -nan
9. Wrong Answer
Test Input:
0 2 -3
Test Output:
x = 1.50
Your Output:
1.50-inf -nan
lỗi này là gì vậy ạ?
là bạn tính sai nhé.
huhu, ko biết sai chỗ nào mà được có 6/10, sửa hoài anh ơi
#include
#include
int main()
{
float a,b,c,x,x1,x2,delta;
scanf(“%f%f%f”,&a,&b,&c);
if (a==0)
{if(b==0&&c!=0){
printf(“VN”);
}
else if(b==0&&c==0)
{printf(“VSN”);
}
else {x=-c/b;
printf(“x=%.2f”,x);
}
}
else {
delta=b*b-4*a*c;
if(delta<0)
{printf("VN");
}
else if(delta==0) {
x=-b/(2*a);
printf("x=%.2f",x);
}
else
{ x1=(-b-sqrt(delta) )/(2*a),x2=(-b+sqrt(delta) )/(2*a);
printf("%.2f %.2f",x1,x2);
}
}
return 0;
}
Bạn nhìn chỗ your output và test ouput nó khác nhau thế nào để mà điều chỉnh.
mọi người chỉ giúp mình cách tính căn ko, mình mới học nên ko biết
bạn có thể dùng hàm tính căn bậc 2 sqrt(a) thư viện math.h
hoặc tổng quát Căn bậc n của a =a^1/n=pow(a,1/n)
var a,b,c,t:integer;
begin
readln(a,b,c);
t:=(b*b)-(4*a*c);
if (t0) then writeln((-b-t)/(2*a):0:2,’ ‘,(-b+t)/(2*a):0:2)
else writeln(‘x = ‘,(-b)/(2*a):0:2);
end;
end.
em không biết em làm sai chỗ nào mà tới text 5 là sai à
Bạn kiểm tra lại xem. xem output của bạn và output của chương trình.
sao cái submit của e cứ running hoài vậy ad,dù e đã refresh mấy lần rồi.
Bạn thử lại xem nhé.
1. Accepted
2. Wrong Answer
Test Input:
1 3 2
Test Output:
-2.00 -1.00
Your Output:
-3.50 -2.50
3. Accepted
4. Accepted
5. Wrong Answer
Test Input:
2 6 4
Test Output:
-2.00 -1.00
Your Output:
-6.50 -5.50
6. Accepted
7. Accepted
8. Accepted
9. Accepted
10. Wrong Answer
Test Input:
1.5 5 2
Test Output:
-2.87 -0.46
Your Output:
-6.20 -3.80
chả bt sai o đâu
sai ở đây chứ đâu:
est Input:
1.5 5 2
Test Output:
-2.87 -0.46
Your Output:
-6.20 -3.80