Dụng mã giả để biểu diễn bài toán giải phương trình bậc 2


————————————-

Dụng mã giả để biểu diễn bài toán giải phương trình bậc 2

sơ đồ khối giải phương trình bậc nhất ax + b = 0

Dụng mã giả để biểu diễn bài toán giải phương trình bậc 2

Sơ đồ khối giải phương trình bậc hai ax2 + bx + c = 0

Chọt Vô Đây Để Đọc Tiếp…..


Đề bài

Mô tả thuật toán tìm nghiệm của phương trình bậc hai tổng quát bằng cách liệt kê hoặc bằng sơ đồ khối.

Lời giải chi tiết

• Xác định bài toán:


- Input: Các số thực a, h, c (a≠0).

- Output: Các số thực X thoả mãn ax2 + bx + c = 0.

Xem thêm: V I Love Music - Vietnam'S Next Top Model

1/ Sơ đồ khối giải phương trình bậc nhất: ax + b = 0

Dụng mã giả để biểu diễn bài toán giải phương trình bậc 2

2/ Sơ đồ khối giải phương trình bậc 2: ax2 + bx + c = 0

Dụng mã giả để biểu diễn bài toán giải phương trình bậc 2

3/ Giải phương trình bậc 2 bằng ngôn ngữ lập trình Pascal: Download TẠI ĐÂY

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

Dụng mã giả để biểu diễn bài toán 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

#include

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

#include

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.