Đăng Nhập

Vui lòng khai báo chính xác tên truy cập và mật khẩu!

Quên mật khẩu?

    Viết chương trình giải phương trình bậc 2 c#

      Admin
      Admin

      Giới tính : Nam

      Đến từ : TPHCM

      Ngày Tham gia : 03/04/2011

      Tổng số bài gửi : 2292

      #1

       Sun Sep 25, 2011 12:18 am

      Hôm nay rảnh ngồi viết một bài hướng dẫn cơ bản cho các bạn mới làm quen với C#.
      Phương trình bậc hai là phương trình có dạng: ax² + bx + c = 0. Hihihi ai mà ko biết

      Vậy giao diện chương trình chúng ta cơ bản cần có:
      3 Textbox để nhận giá trị của a, b, c.
      1 Button để chạy chương trình giải pt.
      4 Label để hiển thị kết quả tính toán như: X1, X2, Delta và thông báo.
      Giờ chúng ta bắt đầu nhé:
      Mở Visual Studio vào File -> New Project -> C# -> Windows Forms Application -> Ok

      Design:
      Tạo 3 Textbox đặt tên (thuộc tính name) lần lược là: txt_a, txt_b, txt_c.
      Tạo một Button đặt tên là btn_giai giải phương trình
      Tạo một Label đặt tên là lb_loigiai để thông báo cho người dùng biết phương trình có bao nhiêu nghiệm.
      Tạo 3 Label đặt tên lần lược là: lb_x1, lb_x2, lb_delta để nhận các giá trị của X1, X2 và Delta.

      Vậy là xong phần design. Cơ bản giao diện chương trình chúng ta như sau:

      Code:
      Click double vào Button btn_giai.
      Chèn đoạn code sau vào giữa { và }:

      Code:

      float x1 = 0, x2 = 0, delta = 0, a, b, c;
                                      a = Convert.ToSingle(txt_a.Text);
                                      b = Convert.ToSingle(txt_b.Text);
                                      c = Convert.ToSingle(txt_c.Text);
                              if (txt_a.Text == "" | txt_b.Text == "" | txt_c.Text == "")
                              {
                                      lb_delta.Visible = false;
                                      lb_x1.Visible = false;
                                      lb_x2.Visible = false;
                                      lb_loigiai.Visible = true;
                                      lb_loigiai.Text = "Bạn chưa nhập đủ a, b, c";
                              }
                              else
                              {

                                      if (a == 0)
                                      {
                                              if (b == 0)
                                              {
                                                      if (c == 0)
                                                      {
                                                              lb_loigiai.Text = "Phương trình có vô số nghiệm!";
                                                              lb_delta.Visible = false;
                                                              lb_x1.Visible = false;
                                                              lb_x2.Visible = false;
                                                      }
                                                      else
                                                      {
                                                              lb_loigiai.Text = "Phương trình vô nghiệm!";
                                                              lb_delta.Visible = false;
                                                              lb_x1.Visible = false;
                                                              lb_x2.Visible = false;
                                                      }
                                              }
                                              else
                                              {
                                                      lb_loigiai.Text = "Phương trình có 1 nghiệm kép!";
                                                      x1 = -c / b;
                                                      lb_delta.Visible = false;
                                                      lb_x1.Visible = true;
                                                      lb_x1.Text = "X = " + x1.ToString();
                                                      lb_x2.Visible = false;
                                              }
                                      }
                                      else
                                      {
                                              delta = (b * b) - 4 * a * c;
                                              double dt = Convert.ToDouble(delta);

                                              if (dt < 0)
                                              {
                                                      lb_delta.Visible = true;
                                                      lb_delta.Text = "Δ = " + delta.ToString() + " < 0";
                                                      lb_loigiai.Visible = true;
                                                      lb_loigiai.Text = "Phương trình vô nghiệm!";
                                                      lb_x1.Visible = false;
                                                      lb_x2.Visible = false;
                                              }
                                              else
                                              {
                                                      if (dt > 0)
                                                      {
                                                              lb_loigiai.Visible = true;
                                                              lb_loigiai.Text = "PT có 2 nghiệm phân biệt!";
                                                              x1 = Convert.ToSingle((-Math.Sqrt(dt) - b) / (2 * a));
                                                              x2 = Convert.ToSingle((Math.Sqrt(dt) - b) / (2 * a));
                                                              lb_delta.Visible = true;
                                                              lb_x1.Visible = true;
                                                              lb_x2.Visible = true;
                                                              lb_delta.Text = "Δ = " + delta.ToString() + " > 0";
                                                              lb_x1.Text = "X1 = " + x1.ToString();
                                                              lb_x2.Text = "X2 = " + x2.ToString();

                                                      }
                                                      else
                                                      {
                                                              lb_delta.Visible = true;
                                                              lb_loigiai.Visible = true;
                                                              lb_delta.Text = "Δ = 0";
                                                              lb_loigiai.Text = "Phương trình có nghiệm kép!";
                                                              x1 = -b / a;
                                                              lb_x1.Visible = true;
                                                              lb_x1.Text = "X1 = X2 = " + x1;
                                                              lb_x2.Visible = false;
                                                      }
                                              }
                                      }
                              }

      Vậy là xong. Giờ bấm F5 là chạy ầm ầm
      Các bạn có thể download source code của chương trình này về nghiên cứu thêm nhé.
      Chương trình này mình đã thêm một số chức năng như: bắt lỗi nhập liệu, có thể tính số thập phân và một vài chức năng khác,...
      Các bạn download về nghiên cứu rồi góp ý với mình nhé.

      Download: [You must be registered and logged in to see this link.]
      PassUnlock: soctrangit.net