[ iT ] Forums: [C#] Viết chương trình giải phương trình bậc 2 - [ iT ] Forums

Jump to content


Balloon vs. Thorns

MU Phuc Hung

Làm Việc Tài Nhà

Mu Da Nang

Tuyển Nhân Viên Bán Hàng

Mu Moi ra





Note:

Vui lòng viết Tv có dấu
Trang 1 / 1
  • Bạn không thể gửi chủ đề mới
  • Bạn không thể gửi trả lời cho chủ đề này

[C#] Viết chương trình giải phương trình bậc 2 Windows Đánh Giá: -----

#1 User is offline   LacVietST 

  • Nhóm: Newbies
  • Bài Viết: 6
  • Gia Nhập: 27-July 07
  • Thành viên mới

Gửi vào 27 January 2010 - 09:35 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 :jeje:

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:
Posted Image



Giờ là phần code.

Code:
Click double vào Button btn_giai.
Chèn đoạn code sau vào giữa { và }:
			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: http://www.mediafire.com/?lm1mm5lymzb
PassUnlock: soctrangit.net

HVTIEN (http://soctrangit.net)
Copy đi đâu xin giữ dòng này. Thank

Bài viết này được chỉnh sửa bởi LacVietST: 27 January 2010 - 09:36 AM

0

Chia sẻ chủ để


Trang 1 / 1
  • Bạn không thể gửi chủ đề mới
  • Bạn không thể gửi trả lời cho chủ đề này

1 người đang đọc chủ đề này
0 thành viên, 1 khách, 0 thành viên ẩn