Bài toán đong nước: Cho 2 bình nước có dung lượng chứa tương ứng là X (lít) và Y (lít) và Z (lít) là số nước cần đong. Bạn hãy xây dựng chương trình bằng cách cho người ta nhập vào X , Y và Z từ bàn phím (Z<X và Z<Y). Sau đó In ra số lần đong. Ví dụ như: Lần 1: 2 4 Lần 2: 3 6 ........ Chú ý: Tương ứng với mỗi lần đong (Lần 1: 2 4) X=2 và Y=4 Thuật toán dừng khi X=Z hoặc Y=Z. (Ví dụ dừng ở lần 2 vì có X=Z=3 thỏa lượng nước cần đong) Với các luật của bài toán như sau (có luật thì dễ dàng hơn nhiều) Luật 1: Nếu bình X đầy thì đổ hết nước bình X ra ngoài Luật 2: Nếu bình Y = 0 thì đổ nước đầy bình Y Luật 3: Nếu bình Y có nước và bình X chưa đầy thì lấy bình Y đổ vào bình X cho đến khi Bình Y hết nước hoặc bình X đầy. - Ban đầu 2 bình đều không có nước - Có những lần đong sẽ không ra kết quả!. Bạn có thể nhập các thông số sau X=5 Y=7 Z=3 nó sẽ hiện ra 16 lần đong là OK! (Rất thực tế và rất giống môn thuật toán mà chúng ta đang học đúng không?)
Mình viết bằng C#, ASP.NET Buồn quá ngồi nghĩ viết chơi, mọi người test thử nhá P/s: dùng số nhỏ thui khoảng <200 chạy cho nhanh chứ ko nó đứng lun đó mình dân TMĐT nên viết ko tốt lắm, mọi người góp ý nhá Đây là file code behind Mã: using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { int X, Y, Z,i; X = int.Parse(x.Text); Y = int.Parse(y.Text); Z = int.Parse(z.Text); int a, b; //a,b lần lượt là 2 biến tương ứng với 2 bình X,Y if (Y > X) { a = 0; b = Y; Response.Write("Lần 1" + ": " + a + " " + b + "<br>"); if (Z > a || Z > b) { lbl_tb.Text = "Sai điều kiện đề bài. Z < a và Z < b"; break; } for (i = 2; i >=2; i++) { if (a == Z || b == Z) break; if (a == X) { a = 0; Response.Write("Lần " + i + ": " + a + " " + b + "<br>"); } else { if (b == Y) { //chỗ này giá trị của a sẽ luôn nhỏ hơn X ko có lớn hơn int d = X - a; //số lít có thể đổ vào bình a a += d; b -= d; Response.Write("Lần " + i + ": " + a + " " + b + "<br>"); } else { if (b == 0) { b = Y; Response.Write("Lần " + i + ": " + a + " " + b + "<br>"); } else //thực chất tại đây giá trị của b luôn nhỏn hơn Y ko thể lớn hơn { int d = X - a; if (d <= b) { a += d; b -= d; Response.Write("Lần " + i + ": " + a + " " + b + "<br>"); } else { a += b; b = 0; Response.Write("Lần " + i + ": " + a + " " + b + "<br>"); } } } } } } else { if (X == Y) { lbl_tb.Text = "Không tìm ra được kết quả vì X = Y"; } else { b = 0; a = X; Response.Write("Lần 1" + ": " + a + " " + b + "<br>"); for (i = 2; i >= 2; i++) { if (a == Z || b == Z) break; if (b == Y) { b = 0; Response.Write("Lần " + i + ": " + a + " " + b + "<br>"); } else { if (a == X) { //chỗ này giá trị của a sẽ luôn nhỏ hơn X ko có lớn hơn int d = Y - b; //số lít có thể đổ vào bình a b += d; a -= d; Response.Write("Lần " + i + ": " + a + " " + b + "<br>"); } else { if (a == 0) { a = X; Response.Write("Lần " + i + ": " + a + " " + b + "<br>"); } else //thực chất tại đây giá trị của b luôn nhỏn hơn Y ko thể lớn hơn { int d = Y - b; if (d <= a) { b += d; a -= d; Response.Write("Lần " + i + ": " + a + " " + b + "<br>"); } else { b += a; a = 0; Response.Write("Lần " + i + ": " + a + " " + b + "<br>"); } } } } } } } } } Đây là file *.aspx HTML: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <center> <form id="form1" runat="server"> <div> </div> <table border="1"> <tr> <td align="center" colspan="2" style="height: 42px"> <asp:Label ID="Label4" runat="server" Font-Bold="True" Font-Size="X-Large" Text="Bài Toán Đong Nước"></asp:Label></td> </tr> <tr> <td colspan="2" style="height: 51px; color: red;" align="left"> Điều kiện: Z<X và Z<Y <br /> Z,X,Y thuộc số tự nhiên</td> </tr> <tr> <td style="width: 132px"> <asp:Label ID="Label1" runat="server" Font-Bold="True" Text="X (Số lít B1 chứa)"></asp:Label></td> <td style="width: 100px"> <asp:TextBox ID="x" runat="server"></asp:TextBox></td> </tr> <tr> <td style="width: 132px"> <asp:Label ID="Label2" runat="server" Font-Bold="True" Text="Y (Số lit B2 chứa)"></asp:Label></td> <td style="width: 100px"> <asp:TextBox ID="y" runat="server"></asp:TextBox></td> </tr> <tr> <td style="width: 132px"> <asp:Label ID="Label3" runat="server" Font-Bold="True" Text="Z (Số lit cần đong)"></asp:Label></td> <td style="width: 100px"> <asp:TextBox ID="z" runat="server"></asp:TextBox></td> </tr> <tr> <td style="width: 132px"> </td> <td style="width: 100px"> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /></td> </tr> <tr> <td align="center" colspan="2"> <asp:Label ID="lbl_tb" runat="server"></asp:Label></td> </tr> </table> </form> </center> </body> </html>