Xây dựng chương trình giải phương trình bậc 1 C

Đề bài: Viết chương trình giải phương trình bậc 1: ax + b = 0 (a, b được nhập vào từ bàn phím). Xét tất cả các trường hợp có thể xảy ra.


Yêu cầu kiến thức:

  • Xác định đúng kiểu dữ liệu của các biến
  • Phân chia các trường hợp có thể xảy ra khi giải và biện luận phương trình bậc 1 ax + b = 0

Code tham khảo dưới đây được lưu với phần mở rộng là “.cpp”:

// Ho ten: Hoang Van Tuan // Website: timoday.edu.vn // De bai: /* Bai 4: Giai va bien luan phuong trinh bac nhat 1 an */ #include #include using namespace std; // Khai bao ham void CachViet1(float a, float b); void CachViet2(float a, float b); //===chuong trinh chinh=== int main() { // Khai bao bien float a, b, x; // Nhap du lieu cout<<"Nhap vao he so a = "; cin>>a; cout<<"Nhap vao he so b = "; cin>>b; // Bien luan - Cach 1 CachViet1(a, b); cout<
Kết luận:

  • Bạn có thể tham khảo thêm khóa học lập trình C từ cơ bản đến nâng cao. Xem tại đây
  • Bạn có thể tham khảo thêm khóa học Thành thạo lập trình C#. Xem tại đây

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 #include 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 \n"); printf("x1 = %f \n", &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; }

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

1 Like

ý 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ếu b!=0 thì làm sao mà x=-b/(2*a) được

Xây dựng chương trình giải phương trình bậc 1 C

VD: 1/0 thì sao mà tính được

1 Like

Xây dựng chương trình giải phương trình bậc 1 C
phong_le_hung:

nhấn 1 là chọn pt bậc 1 còn nhấn 2 là chọn pt bậc 2

int LuaChon; do{ // Thông báo chọn 1 là chọn pt bậc 1 , nhấn 2 là chọn pt bậc 2 if(LuaChon==1) Call ptbac1(); else if(LuaChon==2) Call ptbac2(); else Thông báo nhập lựa chọn chưa đúng; } while(LuaChon<1||LuaChon>2);

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

1 Like

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

#include #include #include int main() { float a=0,b=0,c=0; float x=0,y=0; float d=0; int luachon=1; printf("ban muon giai phuong trinh nao vay ban\n\n"); printf("1. phuong trinh bac 2\n\n"); printf("2.phuong trinh bac 1\n\n"); scanf("%d",&luachon); switch(luachon) { case 1: printf("nhap so a :"); scanf("%f",&a); printf("nhap so b :"); scanf("%f",&b); printf("nhap so c :"); scanf("%f",&c); if(a==0&&b!=0) { x=(-c)/(b); printf("%f",x); } else if(a!=0) { d=b*b-4*a*c; if(d==0) { x=(-b)/(2*a); printf("%f",x); } else if(d>0) { x=(-b+sqrt(d))/(2*a); y=(-b-sqrt(d))/(2*a); printf("%f",x); printf("%f",y); } else { printf("phuong trinh vo nghiem\n\n"); } } break; case 2: printf("toi chua lam duoc chuong trinh nay mong ban thong cam a"); } return 0; }

2 Likes

đã 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

2 Likes

@TheSky cho ý kiến cái nào like dạo à

#include #include #include float bacnhat(float a,float b ); int main() { float a=0,b=0,c=0; float x=0,y=0; float d=0; float u=0,t=0; float r=0; int luachon=1; printf("ban muon giai phuong trinh nao vay ban\n\n"); printf("1. phuong trinh bac 2\n\n"); printf("2.phuong trinh bac 1\n\n"); scanf("%d",&luachon); switch(luachon) { case 1: printf("nhap so a :"); scanf("%f",&a); printf("nhap so b :"); scanf("%f",&b); printf("nhap so c :"); scanf("%f",&c); if(a==0&&b!=0) { x=(-c)/(b); printf("%f",x); } else if(a!=0) { d=b*b-4*a*c; if(d==0) { x=(-b)/(2*a); printf("%f",x); } else if(d>0) { x=(-b+sqrt(d))/(2*a); y=(-b-sqrt(d))/(2*a); printf("%f",x); printf("%f",y); } else { printf("phuong trinh vo nghiem\n\n"); } } break; case 2: printf("moi ban nhap so u nha:\n\n"); scanf("%f",&u); printf("moi ban nhap so t nha:\n\n"); scanf("%f",&t); r=bacnhat(u,t); printf("%f",r); break; } return 0; } float bacnhat(float a,float b ) { float x=0; if(a==0) { printf("phuong trinh nay vo nghiem roi nha ban"); } else if(a!=0) { x=(-b)/a; } return x; }

đấ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

1 Like

mình chỉ học online thôi ^^ và kiếm ít bài tập để bổ sung ý mà

2 Likes

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

1 Like

Xây dựng chương trình giải phương trình bậc 1 C
Jobs_Apple_Steve:

switch(luachon)

Nếu người dùng nhập vào 3 thì sao nhỉ ?

Xây dựng chương trình giải phương trình bậc 1 C
Jobs_Apple_Steve:

if(a==0) { printf(“phuong trinh nay vo nghiem roi nha ban”);

}

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ỉ :3

if(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 :

if(a==0) { if(b == 0) printf("phuong trinh vo nghiem"); } else printf("%d", -b/2*a);

Mình nghĩ thế này chứ nhỉ ?
Thế này vẫn chưa đủ chặt chẽ

Xây dựng chương trình giải phương trình bậc 1 C

có gì thiếu bạn chỉ giáo thêm ^^

1 Like

next page →

Home Categories FAQ/Guidelines Terms of Service Privacy Policy