30/09/2018, 20:13
Lập trình c cơ bản: viết 2 hàm giải phương trình bậc 1 và bậc 2
e đang làm cái phần bài tập bên hàm (function) cái cái bài tập này.
- viết 2 hàm giải phương trình bậc 1 và bậc 2
chương trình yêu cầu người dùng chọn lựa. Chọn 1 thì giải pt bậc 1, chọn 2 thì giải pt bậc 2. e làm tới phần xử lý còn xuất ra e hơi bí bác nào giúp em phần đó với code của e:
#include <stdio.h>
#include <conio.h>
float ptbac1(float a, float b)
{
printf("nhap vao he so a : "); scanf("%f", &a);
printf("nhap vao he so b : "); scanf("%f", &b);
if(a == 0)
{
if(b == 0)
printf("phuong trinh vo nghiem");
else
printf("phuong trinh co mot nghiem duy nhat x = %f", -b/2*a);
return 1;
}
return 0;
}
float ptbac2(float a, float b, float c)
{
printf("nhap vao he so a : "); scanf("%f", &a);
printf("nhap vao he so b : "); scanf("%f", &b);
printf("nhap vao he so c : "); scanf("%f", &c);
if(a != 0)
{
float deta = b*b - 4*a*c;
if(deta > 0)
{
float x1 = (-b + sqrt(deta)) / 2*a;
float x2 = (-b - sqrt(deta)) / 2*a;
printf("vay phuong trinh co 2 nghiem phan biet la
");
printf("x1 = %f
", &x1);
printf("x2 = %f", & x2);
}
else if(deta == 0)
printf("phuong trinh vo nghiem");
else
printf("phuong trinh co nghiem kep x = %f", -b/2*a);
return 1;
}
return 0;
}
Bài liên quan
Chưa hiểu ý bạn lắm.Theo mình thấy 2 hàm giải phương trình nếu đã xuất kế quả trong hàm thì không cần phải trả về kiểu
float
cứ đểvoid
. Phần chọn lựa thì dùng switch case hoặc if đều đượcý e là phần xuất làm thế nào để lựa chọn 1 trong 2 ấy bác, chẳng hạn nhấn 1 là chọn pt bậc 1 còn nhấn 2 là chọn pt bậc 2 dạng như vậy ý
PT bậc nhất dạng : ax+b=0 đúng không??
vậy cái if đầu tiên
if(a==0)
nếub!=0
thì làm sao màx=-b/(2*a)
đượcVD: 1/0 thì sao mà tính được
Không biết có phải ý bạn là như vậy không ?
Mình hơi thắc mắc là tại sao lại là bạn lại để hàm ở dạng trả về
float
vì pt bậc 1 hay pt bậc 2 đều có các số thực nên mình để float để tính luôn các số thực
thế bạn phải làm menu với swith chứ bạn
đã viết đã tét cho bạn mà mình khuyên bạn nếu bạn dùng hàm để trả về phương trình bậc 1 thì được còn nếu muốn trả về phương trình bậc 2 có lẽ bạn nên dùng con trỏ vì một hàm chỉ trả vè duy nhất một giá thôi bạn à đấy là thoe ý kiến của mình nha bạn
@TheSky cho ý kiến cái nào like dạo à
đấy là code hoàn chỉnh của mình theo yêu cầu của bạn mình chỉ viết đươc thế này thôi mong bạn góp y s nha mà tiện thể bạn đang học ở đâu vậy mình cũng đang học c ở fpt aptech nha
mình chỉ học online thôi ^^ và kiếm ít bài tập để bổ sung ý mà
banj xem the co duoc khong ban minh moi hoc thoi a
mong banj chỉ giáo thêm nha đoạn code của mình @phong_le_hung
@TheSky like dạo à chỉ giáo đi ông
Nếu người dùng nhập vào 3 thì sao nhỉ ?
Vì hàm trả về kiểu
float
nếu phương trình vô nghiệm thì làm sao để biết.Trả về 0. Nhỡ may nghiệm = 0 thì sao ta ???
ax +b=0 nếu a mà bằng 0 thì chẳng vô nghiệm rồi
b = 0
thì sao vẫn đúng mà nhỉ :3if(a==0)
{
if(b == 0)
printf(“phuong trinh vo nghiem”);
else
printf("%d", -b/2*a);
}
Mình sửa lại đoạn code của bạn chút :
Mình nghĩ thế này chứ nhỉ ?
Thế này vẫn chưa đủ chặt chẽ
có gì thiếu bạn chỉ giáo thêm ^^
Điều kiện pn sai tùm lum và cả đống lỗi nữa rồi.
Bạn tham khảo code này xem sao