Viết chương trình trên ngôn ngữ C giải phương trình bậc 2 với hệ so a, b Nhap từ bàn phím

Giải phương trình bậc hai là bài tập khá quen thuộc khi bạn mới học lập trình. Đây là một trong các bài toán điển hình về các lệnh rẽ nhánh trong C, đó là các lệnh IF-ELSE. Tương ứng với mỗi trường hợp, bạn sẽ có một nhánh khác nhau.

Chương trình C

Dưới đây là chương trình C để giải phương trình bậc hai trong C:

#include<math.h> #include<conio.h> #include<stdio.h> #include<string.h> main() { float a,b,c,d; printf("Nhap vao 3 so a, b, c: "); scanf("%f%f%f",&a,&b,&c); if(a==0) { if(b==0) { if(c==0) printf("Phuong trinh co vo so nghiem!"); else printf("Phuong trinh vo nghiem!"); } else printf("Phuong trinh co nghiem duy nhat la: %f",-c/b); } else { d=b*b-4*a*c; if (d<0) printf("Phuong trinh vo nghiem!!!"); else if (d==0) printf("Phuong trinh co nghiem kep la: %f",-b/(2*a)); else printf("Phuong trinh co 2 nghiem phan biet la: %f,%f",(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)); } }

Quảng cáo

Biên dịch chương trình C trên sẽ cho kết quả:

Quảng cáo

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.

Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại //www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: //www.facebook.com/tuyen.vietjack

Follow facebook cá nhân Nguyễn Thanh Tuyền //www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.

bai-tap-c-co-ban.jsp

Bài tập cơ bản này ta có thể có hướng giải quyết là sử dụng các phép toán cơ bản trong ngôn ngữ lập trình C.

Đầu vào sẽ là một biến nguyên dương a, b và c,  yêu cầu của bài toán là tìm x.

2. Lời giải

Đầu tiên chúng ta tìm hiểu phương trình bặc nhất hai ẩn là gì?

Phương trình bậc hai một ẩn là phương trình có dạng ax2 + bx + c = 0 với a, b và c là các số đã cho và a!=0.

Các bước giải phương trình bậc hai:

Bước 1: Tính denta = b2 – 4ac

Bước 2: Nếu denta < 0 phương trình vô nghiệm; nếu denta = 0 phương trình có nghiệm kép x1 = x2 = -b/2a nếu denta>0 thì phương trình có nghiệm x1 = (-b + √denta ) / (2a) , x2 = (-b – √denta ) / (2a).

Các bước thực hiện bài toán như sau:

Bước 1: Khai báo biến int a, b, c, denta.

Bước 2: Nhập dữ liệu từ bàn phím truyền vào a , b và c.

Bước 3: Tính denta = b*b – 4*a*c.

Bước 4: Sử dụng if với điều kiện nếu denta<0 thì in ra phương trình vô nghiệm ; ngược lại nếu sử dụng if nếu denta=0 thì in ra phương trình có nghiệm kép x1 = x2 = (float)-b/(2*a) ta phải ép kiểu float vì là hai số kiểu int chia cho nhau; còn ngược lại denta>0 thì in ra phương trình có hai nghiệm là x1 = (float)(-b + sqrt(denta )) / (2*a) , x2 =  (float)(-b – sqrt(denta)) / (2*a) ta phải ép kiểu float vì là hai số kiểu int chia cho nhau.

Chương trình giải phương trình bậc hai một ẩn như sau:

#include <stdio.h> #include <math.h> int main() { //khai bao a, b, c, denta int a, b, c, denta; //nhap a printf("nhap a:"); scanf("%d",&a); //nhap b printf("nhap b:"); scanf("%d",&b); //nhap c printf("nhap c:"); scanf("%d",&c); //tính denta denta = b*b - 4*a*c; if(denta < 0) { printf("Phuong trinh %dx^2 + %dx + %d = 0 vo nghiem", a, b, c); }else if(denta==0){ printf("Phuong trinh %dx^2 + %dx + %d = 0 co nghiem duy nhat: x1 = x2 = %f", a, b,c, (float)-b/(2*a)); }else{ printf("Phuong trinh %dx^2 + %dx + %d = 0 co hai nghiem là:\n", a, b,c); printf("x1 = %f \n",(float)(-b + sqrt(denta)) / (2*a)); printf("x1 = %f \n",(float)(-b - sqrt(denta)) / (2*a)); } }

Ví dụ tôi nhập a=2, b=-7 và c=3

Kết quả:

nhap a:2 nhap b:-7 nhap c:3 Phuong trinh 2x^2 + -7x + 3 = 0 co hai nghiem lα: x1 = 3.000000

x1 = 0.500000

3. Tổng kết

Để thực hiện giải phương trình bậc nhất một ẩn trong C bạn đọc cần phải có kiến thức cơ bản về ngôn ngữ lập trình C, bạn cần nắm vững cách nhập xuất căn bản và các cách sử dụng vòng lặp, cách ép kiểu, sử dụng hàm căn bậc hai trong C và các phép toán học cơ bản.

by GokiSoft.com - 20:21 12/02/2022 25,268 Lượt Xem

Short URL: //gokisoft.com/1606

Cho phương trình bậc 2 như sau

a * x2 + b * x + c = 0

với a, b, c : được nhập thông qua hàm promt[] trong javascript

Ví du: a = prompt['Nhập giá trị của a'] => hiển thị 1 form cho bạn nhập => giá trị nhập sẽ được gán vào a

tương tự làm với b, c

=> In kết quả của x

Viết thủ tục nhập 1 xâu kí tự [Tin học - Lớp 11]

2 trả lời

Hoạt động nào sau đây lặp với số lần biết trước [Tin học - Lớp 8]

2 trả lời

Cho các câu lệnh sau hãy chỉ ra câu lệnh đúng [Tin học - Lớp 8]

2 trả lời

Hãy đọc đoạn chương trình sau [Tin học - Lớp 8]

1 trả lời

Câu lệnh sau giải bài toán nào [Tin học - Lớp 8]

1 trả lời

Điều kiện để dừng vòng lặp là [Tin học - Lớp 8]

1 trả lời

Cách giải phương trình bậc 2 thì chúng ta đã được học ở lớp dưới rồi phải không nào ? Vậy giải phương trình bậc 2 trong C/C++ thì sẽ như thế nào ? Hôm nay chúng ta sẽ cùng tìm hiểu.

Cách giải phương trình bậc 2

                  Phương trình bậc 2

Phương trình bậc 2 là phương trình có dạng: ax² +bx + c = 0. [a≠0]  [1]

Ở các lớp dưới ta đã có phương pháp giải bằng cách tính delta:

  • Đầu tiên tính delta = b² – 4ac
  • Nếu delta < 0 thì kết luận vô nghiệm
  • Nếu delta = 0 thì có nghiệm kép
  • Nếu delta > 0 thì sẽ có 2 nghiệm phân biệt

Ý tưởng

  • Dùng một vòng do while để nhập a, b, c nếu a = 0, thì nhập lại.
  • Chúng ta dùng hàm sqrt[] trong thư viện math.h để tính căn delta hoặc tính căn không dùng hàm sqrt[]tại đây.
  • Chúng ta tạo hàm giaiPT trả về kiểu int chính là số nghiệm của phương trình [1].
  • Chúng ta sẽ đưa tham chiếu 2 biến x1 , x2 vào hàm giaiPT để gán giá trị hai nghiệm.
  • Nếu pt [1] vô nghiện thì giaiPT sẽ trả về 0 , đồng thời gán x1 = x2 =0 .
  • Nếu pt [1] có nghiệm kép thì giaiPT sẽ trả về 1 , đồng thời gán x1 = x2 = -b/2a .
  • Nếu pt [1] có 2 nghiệm thì giaiPT sẽ trả về 2 , gán x1 = [-b+√delta ] / 2a  x = [-b-√delta ] / 2a .

Code C

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

#include<stdio.h>

#include<math.h>

int giaiPT[float a, float b, float c,float &x1, float &x2]{

    float delta = b*b - 4*a*c;

    if[delta<0]{

        x1=x2=0.0;

        return 0;

    }

    else if[delta==0]{

        x1 = x2 = -b/[2*a];

        return 1;

    }

    else{

        delta = sqrt[delta];

        x1 = [-b + delta] / [2*a];

        x2 = [-b - delta] / [2*a];

        return 2;

    }

}

int main[]{

    float a,b,c;

    float x1,x2;

    do{

        printf["Nhap a [a!=0]: "];

        scanf["%f",&a];

        printf["Nhap b: "];

        scanf["%f",&b];

        printf["Nhap c: "];

        scanf["%f",&c];

    }

    while[!a];// Nếu a=0 thì nhập lại

    int numNo = giaiPT[a,b,c,x1,x2];

        if[numNo == 0] {

        printf["Phuong trinh da cho vo nghiem"];

    }

    else if[numNo == 1]{

        printf["Phuong trinh da cho co nghiem kep x=%.4f",x1];

    }

    else{

        printf["Phuong trinh da cho co hai nghiem phan biet\nx1=%.4f \nx2=%.4f",x1,x2];

    }

}

Nhap a [a!=0]: 3

Nhap b: -5

Nhap c: 2

Phuong trinh da cho co hai nghiem phan biet

x1=1.0000

x2=0.6667

Code C++

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

#include<iostream>

#include<math.h>

using namespace std;

int giaiPT[float a, float b, float c,float &x1, float &x2]{

    float delta = b*b - 4*a*c;

    if[delta<0]{

        x1=x2=0.0;

        return 0;

    }

    else if[delta==0]{

        x1 = x2 = -b/[2*a];

        return 1;

    }

    else{

        delta = sqrt[delta];

        x1 = [-b + delta] / [2*a];

        x2 = [-b - delta] / [2*a];

        return 2;

    }

}

int main[]{

    float a,b,c;

    float x1,x2;

    do{

        cout<<"Nhap a [a!=0]: ";

        cin>>a;

        cout<<"Nhap b: ";

        cin>>b;

        cout<<"Nhap c: ";

        cin>>c;

    }

    while[!a];

        int numNo = giaiPT[a,b,c,x1,x2];

    if[numNo ==0 ] {

        cout<<"Phuong trinh da cho vo nghiem";

    }

    else if[numNo==1]{

        cout<<"Phuong trinh da cho co nghiem kep x=%.4f" << x1;

    }

    else{

        cout<<"Phuong trinh da cho co hai nghiem phan biet"<<endl;

        cout<< "x1=" << x1<<endl;

        cout<< "x2=" << x2<<endl;

    }

}

Nhap a [a!=0]: 3

Nhap b: -5

Nhap c: 2

Phuong trinh da cho co hai nghiem phan biet

x1=1

x2=0.666667

Bài học của mình đến đây là kết thúc.

Video liên quan

Video liên quan

Chủ đề