Ngôn ngữ C giải phương trình bậc 2

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 denta0 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 #include 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.

Viết chương trình giải phương trình bậc 2 trong C. Phương trình bậc 2 có dạng:

Lời giải

Lời giải của chúng tôi sử dụng phương thức sqrt[] để tính căn bậc 2 của một số trong C. Sử dụng phương thức scanf[“%f”, &a] để đọc số thực từ bàn phím và gán cho biến a.

#include /** * giai phuong trinh bac 2: ax2 + bx + c = 0 * * @param a: he so bac 2 * @param b: he so bac 1 * @param c: so hang tu do */ void giaiPTBac2[float a, float b, float c] { // kiem tra cac he so if [a == 0] { if [b == 0] { printf["Phuong trinh vo nghiem!"]; } else { printf["Phuong trinh co mot nghiem: x = %f", [-c / b]]; } return; } // tinh delta float delta = b*b - 4*a*c; float x1; float x2; // tinh nghiem if [delta > 0] { x1 = [float] [[-b + sqrt[delta]] / [2*a]]; x2 = [float] [[-b - sqrt[delta]] / [2*a]]; printf["Phuong trinh co 2 nghiem la: x1 = %f va x2 = %f", x1, x2]; } else if [delta == 0] { x1 = [-b / [2 * a]]; printf["Phong trinh co nghiem kep: x1 = x2 = %f", x1]; } else { printf["Phuong trinh vo nghiem!"]; } } /** * ham main */ int main[] { float a, b, c; printf["Nhap he so bac 2, a = "]; scanf["%f", &a]; printf["Nhap he so bac 1, b = "]; scanf["%f", &b]; printf["Nhap so hang tu do, c = "]; scanf["%f", &c]; giaiPTBac2[a, b, c]; return 1; }

Kết quả:

Nhap he so bac 2, a = 2 Nhap he so bac 1, b = 3 Nhap so hang tu do, c = 1 Phuong trinh co 2 nghiem la: x1 = -0.500000 va x2 = -1.000000

// Bai toan giai phuong trinh bac hai

#include

#include

#include

void main[]

{

  float a, b, c, d, x1, x2;

  clrscr[];

  printf["\nNhap vao a: "];

  scanf["%f",&a];

  printf["\nNhap vao b: "];

  scanf["%f",&b];

  printf["\nNhap vao c: "];

  scanf["%f",&c];

  if[a==0]{

    if[b==0]{

      if[c==0]{

        printf["\nPhuong trinh vo so nghiem!"];

      }

      else{

        printf["\nPhuong trinh vo nghiem!"];

      }

    }

    else{

      printf["\nPhuong trinh co mot nghiem, x = %g",-c/b];

    }

  }

  else{

    d=b*b-4*a*c;

    if[d

Chủ Đề