Trong bài viết này mình sẽ hướng dẫn các bạn cách giải phương trình bậc hai trong C#. Đây là bài tập thường gặp khi học bất kì ngôn ngữ lập trình nào, bởi nó giúp các bạn rèn luyện tư duy logic và áp dụng các kiến thức căn bản trong lập trình.
Như chung ta đã được học ở toán cơ sở, phương trình bậc hai có dạng như sau:
ax2 + bx + c = 0, trong đó a, b, c là các tham số đã biết và x là nghiệm của phương trình.
Bây giờ chúng ta sẽ bắt đầu biết chương trình để giải phương trình bậc hai có dạng như trên, bắt đầu thôi nào !!!!
Giải phương trình bậc hai trong C#
Hướng dẫn:
Bài viết này được đăng tại [kiso.vn]
Bước 1: Để giải được phương trình bậc hai, đầu tiên chúng ta cần biết được các tham số a, b, c. Ta có thể tự gán sẵn hoặc yêu cầu người dùng nhập giá trị cho các tham số này.
- Nếu a = 0 thì phương trình trở về phương trình bậc nhất, khi đó ta sẽ giải phương trình dưới dạng bậc nhất bx + c = 0.
- Nếu a != 0 thì ta tiếp tục thực hiện bước 2.
Bước 2: Tính Delta theo công thức:
Delta = b2 – 4ac, trong đó a, b, c là các tham số đã biết
Bước 3: Xét điều kiện cho Delta.
- Nếu Delta < 0 thì phương trình vô nghiệm.
- Nếu Delta = 0 thì phương trình có nghiệm kép x1 = x2 = -b / 2a.
- Nếu Delta > 0 thì phương trình có hai nghiệm phân biệt x1 = (-b + Sqrt(Delta)) / (2a) và x2 = (-b – Sqrt(Delta)) / (2a).
Ví dụ: Dưới dây là chương trình giải phương trình bậc hai mà mình đã viết sẵn, trong đó có giải thích chi tiết, các bạn có thể tham khảo nhé.
using System; namespace BaiTapCSharp { class Program { static void Main(string[] args) { //khai báo hai biến a, b vầ c là va tham số mà người dùng nhập vào int a, b, c; //khai báo biến x1, x2 là nghiệm của phương trình và biến delta double x1, x2, delta; //yêu cầu người dùng nhập vào ba số a, b, c Console.Write("n Nhap vao so a: "); a = Convert.ToInt32(Console.ReadLine()); Console.Write("n Nhap vao so b: "); b = Convert.ToInt32(Console.ReadLine()); Console.Write("n Nhap vao so c: "); c = Convert.ToInt32(Console.ReadLine()); //hiển thị phương trình bậc hai mà người dùng vừa nhập dưới dạng ax^2 + bx + c = 0 Console.WriteLine("n Chuong trinh ban vua nhap la {0}x^2 + {1}x + {2} = 0.", a, b, c); //nếu a = 0 thì phương trình bậc hai trở thành phương trình bậc nhất if (a == 0) { //ta giải phương trình bậc nhất bx + c = 0 if (b == 0) { //nếu b = 0 và c = 0 thì phương trình vô số nghiệm if (c == 0) { Console.WriteLine("n Phuong trinh co vo so nghiem."); } //nếu b = 0 và c != 0 thì phương trình vô nghiệm else { Console.WriteLine("n Phuong trinh vo nghiem."); } } else { x1 = (double)-c / b; //Sử dụng phương thứ Math.Round() để làm tròn kết quả lên 2 số thập phân Console.WriteLine("n Phuong trinh co nghiem duy nhat x = {0}", Math.Round(x1, 2)); } } //nếu a != 0 thì ta bắt đầu giải phương trình bậc hai else { //tính delta delta = Math.Pow(b, 2) - 4 * a * c; //kiểm tra nếu delta < 0 thì phương trình vô nghiệm if (delta < 0) { Console.WriteLine("n Phuong trinh vo nghiem."); } //nếu delta = 0 thì phương trình có hai nghiệm kép else if (delta == 0) { x1 = x2 = -b / (2 * a); Console.WriteLine("n Phuong trinh co nghiem kep x1 = x2 = {0}", x1); } //nếu delta > 0 thì phuong trình có hai nghiệm phân biệt else { x1 = (-b + Math.Sqrt(delta)) / (2 * a); x2 = (-b - Math.Sqrt(delta)) / (2 * a); Console.WriteLine("n Phuong trinh hai nghiem phan biet:n X1 = {0}n X2 = {1}", x1, x2); } } Console.WriteLine("nn-----Chuong trinh nay duoc dang tai Kiso.vn---"); } } }
Kết quả 1: Phương trình có hai nghiệm phân biệt
Kết quả 2: Phương trình có hai nghiệm kép
Kết quả 3: Phương trình vô nghiệm
Kết quả 4: Phương trình có nghiệm duy nhất
Như vậy là chúng ta đã thực hiện xong chương trình giải phương trình bậc hai trong C#. Đây là dạng bài tập cơ bản giúp các bạn làm quen với ngôn ngữ lập trình C#, vì vậy hãy luyện tập thật nhiều nhé. Chúc các bạn thành công !!!
Bài viết liên quan
[CSF-2] Một số thiết lập CSF, LFD
Hôm nay mình sẽ thực hiện một số thiết lập trên CSF Mở file config để sửa đổi một số tính năng dưới /etc/csf/csf.conf Nội dung chínhGiải phương trình bậc hai trong C#1. Bảo vệ...
[CSF-1] Tăng bảo mật Server với ConfigServer Firewall (CSF)
Nội dung chínhGiải phương trình bậc hai trong C#1. Khái niệm CSF: CSF (ConfigServer & Firewall) là một bộ ứng dụng hoạt động trên Linux như một firewall được phát hành miễn phí để tăng...
Sử dụng SSH Key với Gitlab và Github
Bài viết này mình sẽ hướng dẫn các bạn tạo ssh key cho Gitlab và Github SSH là gì? Secure Socket Shell là một giao thức mạng dùng để thiết lập kết nối mạng một...
Directory traversal vulnerabilities (phần 4)
Nội dung chínhGiải phương trình bậc hai trong C#V. Phân tích và khai thác các lỗ hổng Directory traversal (tiếp) 5. Bypass lỗ hổng khi trang web sử dụng đường dẫn đầy đủ Xét đoạn...
Directory traversal vulnerabilities (phần 3)
Nội dung chínhGiải phương trình bậc hai trong C#V. Phân tích và khai thác các lỗ hổng Directory traversal 1. Lỗ hổng xảy ra khi sử dụng các hàm đọc file và tin tưởng đầu...
Directory traversal vulnerabilities (phần 2)
Nội dung chínhGiải phương trình bậc hai trong C#III. Vì sao lỗ hổng Directory traversal xuất hiện? Với mỗi ngôn ngữ lập trình khác nhau, điểm xuất hiện các lỗ hổng Directory traversal cũng khác...