Từ 1 tới 9 trên tổng số 9 kết quả

Đề tài: Viết chương trình giải phương trình bậc 2 bằng C#

  1. #1
    Ngày gia nhập
    05 2009
    Bài viết
    4

    Mặc định Viết chương trình giải phương trình bậc 2 bằng C#

    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, X2Delta.

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



    Giờ là phần code.

    Code:
    Click double vào Button btn_giai.
    Chèn đoạn code sau vào giữa { và }:
    Visual C# Code:
    1.             float x1 = 0, x2 = 0, delta = 0, a, b, c;
    2.                 a = Convert.ToSingle(txt_a.Text);
    3.                 b = Convert.ToSingle(txt_b.Text);
    4.                 c = Convert.ToSingle(txt_c.Text);
    5.             if (txt_a.Text == "" | txt_b.Text == "" | txt_c.Text == "")
    6.             {
    7.                 lb_delta.Visible = false;
    8.                 lb_x1.Visible = false;
    9.                 lb_x2.Visible = false;
    10.                 lb_loigiai.Visible = true;
    11.                 lb_loigiai.Text = "Bạn chưa nhập đủ a, b, c";
    12.             }
    13.             else
    14.             {
    15.  
    16.                 if (a == 0)
    17.                 {
    18.                     if (b == 0)
    19.                     {
    20.                         if (c == 0)
    21.                         {
    22.                             lb_loigiai.Text = "Phương trình có vô số nghiệm!";
    23.                             lb_delta.Visible = false;
    24.                             lb_x1.Visible = false;
    25.                             lb_x2.Visible = false;
    26.                         }
    27.                         else
    28.                         {
    29.                             lb_loigiai.Text = "Phương trình vô nghiệm!";
    30.                             lb_delta.Visible = false;
    31.                             lb_x1.Visible = false;
    32.                             lb_x2.Visible = false;
    33.                         }
    34.                     }
    35.                     else
    36.                     {
    37.                         lb_loigiai.Text = "Phương trình có 1 nghiệm kép!";
    38.                         x1 = -c / b;
    39.                         lb_delta.Visible = false;
    40.                         lb_x1.Visible = true;
    41.                         lb_x1.Text = "X = " + x1.ToString();
    42.                         lb_x2.Visible = false;
    43.                     }
    44.                 }
    45.                 else
    46.                 {
    47.                     delta = (b * b) - 4 * a * c;
    48.                     double dt = Convert.ToDouble(delta);
    49.  
    50.                     if (dt < 0)
    51.                     {
    52.                         lb_delta.Visible = true;
    53.                         lb_delta.Text = "Δ = " + delta.ToString() + " < 0";
    54.                         lb_loigiai.Visible = true;
    55.                         lb_loigiai.Text = "Phương trình vô nghiệm!";
    56.                         lb_x1.Visible = false;
    57.                         lb_x2.Visible = false;
    58.                     }
    59.                     else
    60.                     {
    61.                         if (dt > 0)
    62.                         {
    63.                             lb_loigiai.Visible = true;
    64.                             lb_loigiai.Text = "PT có 2 nghiệm phân biệt!";
    65.                             x1 = Convert.ToSingle((-Math.Sqrt(dt) - b) / (2 * a));
    66.                             x2 = Convert.ToSingle((Math.Sqrt(dt) - b) / (2 * a));
    67.                             lb_delta.Visible = true;
    68.                             lb_x1.Visible = true;
    69.                             lb_x2.Visible = true;
    70.                             lb_delta.Text = "Δ = " + delta.ToString() + " > 0";
    71.                             lb_x1.Text = "X1 = " + x1.ToString();
    72.                             lb_x2.Text = "X2 = " + x2.ToString();
    73.  
    74.                         }
    75.                         else
    76.                         {
    77.                             lb_delta.Visible = true;
    78.                             lb_loigiai.Visible = true;
    79.                             lb_delta.Text = "Δ = 0";
    80.                             lb_loigiai.Text = "Phương trình có nghiệm kép!";
    81.                             x1 = -b / a;
    82.                             lb_x1.Visible = true;
    83.                             lb_x1.Text = "X1 = X2 = " + x1;
    84.                             lb_x2.Visible = false;
    85.                         }
    86.                     }
    87.                 }
    88.             }

    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é.
    Attached Files Attached Files

  2. #2
    Ngày gia nhập
    02 2010
    Nơi ở
    Tây Ninh
    Bài viết
    6

    Bắt lỗi rất rõ ràng! Hình như nghiệm kép x1 = x2 = -b/ 2a thanks!

    Chỉ có chút lỗi thế thôi

  3. #3
    Ngày gia nhập
    03 2011
    Bài viết
    2

    sao không thấy phần giao diện đâu bác ơi!!! chỉ cho mỗi code thì khó hiểu bài lắm.Phải có giao diện và thuộc tính nữa bác ơi!!! em chân thành cảm ơn

  4. #4
    Ngày gia nhập
    03 2011
    Nơi ở
    Thanh Hóa
    Bài viết
    35

    Bạn từ code rồi viết nên được mà ! ở đây chủ topic đã làm rất rõ rồi mà !
    Ấy Ơi ! I Love You Đọc Sao Ta.Ấy Đọc Cho Tớ Nghe Được Không

  5. #5
    Ngày gia nhập
    03 2009
    Nơi ở
    %appdata%\Temp
    Bài viết
    817

    Một sản phẩm của công nghệ kéo thả
    .::[The best way to predict the future is to invent it]::.
    __________________________________________________ _ - Alan Kay -

  6. #6
    Ngày gia nhập
    03 2011
    Bài viết
    136

    Mặc định Viết chương trình giải phương trình bậc 2 bằng C#

    Trích dẫn Nguyên bản được gửi bởi Wazi Armstrong Xem bài viết
    Một sản phẩm của công nghệ kéo thả
    Mơi học c# hay winform thì kéo thả và bắt sự kiện thôi bạn ơi,chưa đủ độ để nhớ hết các thuộc tính để tạo hình đâu.Công nhận bác này làm dễ hiểu ko cần hình cũng hiểu tốt được

  7. #7
    Ngày gia nhập
    04 2011
    Bài viết
    4

    Mặc định Cái này nói chung ai bỏ chút thời gian là làm dc

    Trích dẫn Nguyên bản được gửi bởi thitcholaotien Xem bài viết
    Mơi học c# hay winform thì kéo thả và bắt sự kiện thôi bạn ơi,chưa đủ độ để nhớ hết các thuộc tính để tạo hình đâu.Công nhận bác này làm dễ hiểu ko cần hình cũng hiểu tốt được
    miễn bàn

  8. #8
    Ngày gia nhập
    03 2011
    Bài viết
    136

    Trích dẫn Nguyên bản được gửi bởi dumaster91 Xem bài viết
    miễn bàn
    Mình hem hiểu ý cậu

  9. #9
    Ngày gia nhập
    08 2010
    Bài viết
    3

    Các nghiệm và thông báo số nghiệm được hiển thị trên richtextbox của phương trình bậc 2. Có cả nghiệm phức được mình viết. Có gì sai sót mình hoc các bạn nhiều.

    Code:
     private void button2_Click(object sender, EventArgs e)
            {
    
                string tgd, tgx1t, tgx1a, tgx2t, tgx2a, tg,t="";
                double a, b, c, d, x, x1t, x1a, x2t, x2a;
                try
                {
                    
                    a = Convert.ToDouble(textBox5.Text);
                    b = Convert.ToDouble(textBox6.Text);
                    c = Convert.ToDouble(textBox7.Text);
                    if (a == 0)
                    {
                        if (b == 0)
                        {
                            if (c == 0)
                            {
                                t = t + "Phương trình bậc hai có vô số nghiệm";
                            }
                            else
                            {
                                t = t + "Phương trình bậc hai vô nghiệm";
                            }
                        }
                        else
                        {
                            t = t + "Phương trình bậc hai có nghiệm đơn \n";
                            x = -c / b;
                            tg = Convert.ToString(x);
                            t = t + "x=" + tg+"\n";
    
                        }
                    }
                    else
                    {
                        d = b * b - 4 * a * c;
                        tgd = Convert.ToString(d);
                        t = t + "Delta="+tgd+"\n";
                        if (d < 0)
                        {
                            t = t + "Phương trình bậc hai có hai nghiệm phức \n";
                            x1t = -b / (2 * a);
                            tgx1t = Convert.ToString(x1t);
                            x1a = Math.Sqrt(-d) / (2 * a);
                            tgx1a = Convert.ToString(x1a);
                            t = t + "x1=" + tgx1t + " + " + tgx1a + " .i" + "\n";
                            x2t = -b / (2 * a);
                            tgx2t = Convert.ToString(x2t);
                            x2a = -Math.Sqrt(-d) / (2 * a);
                            tgx2a = Convert.ToString(x2a);
                            t = t + "x2=" + tgx2t + " + " + tgx2a + " .i" + "\n";
                        }
                        else if (d == 0)
                        {
                            t=t + "Phương trình bậc hai có một nghiệm kép \n";
                            x = -b / (2 * a);
                            tg = Convert.ToString(x);
                            t =t+ "x"+tg+"\n";
                        }
                        else
                        {
                            t = t+" Phương trình bậc hai có hai nghiệm phân biệt \n";
                            x1t = (-b + Math.Sqrt(d)) / (2 * a);
                            tgx1t = Convert.ToString(x1t);
                            t = t + "x1=" + tgx1t + "\n";
                            x2t = (-b - Math.Sqrt(d)) / (2 * a);
                            tgx2t = Convert.ToString(x2t);
                            t = t + "x2=" + tgx2t + "\n";
                        }
                    }
                    rtxt_phb2.Text = t;
                }
                catch (Exception)
                {
    
                    MessageBox.Show("Bạn nhập sai.Bạn nhấn ok nhập lại số" ); ;
                }
                
            }

Các đề tài tương tự

  1. Toàn Quốc Tìm người viết công cụ giải mã file video (Mã hóa đơn giản)
    Gửi bởi Kevin Hoang trong diễn đàn Việc làm IT(tự do)
    Trả lời: 3
    Bài viết cuối: 19-07-2013, 04:26 PM
  2. ADO.NET Cần gợi ý viết hàm kiểm tra hết hạn cho đọc giả
    Gửi bởi vcn9294 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 30-04-2013, 12:02 AM
  3. Lập trình C hai cách viết trong bài viết này có gì khác không, nếu khác mọi người giải thích giúp với
    Gửi bởi letung94 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 02-01-2013, 07:29 AM
  4. Viết Giao Diện Phần Mềm bằng Flash, Core viết = C
    Gửi bởi trần trân trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 5
    Bài viết cuối: 31-05-2011, 06:45 AM
  5. Bài tập C Viết chương trình giải phương trình bật 2 .
    Gửi bởi ĐạiBàng trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 29-11-2010, 09:20 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn