[Lession 1 - PHP] Giải Bài Toán Rút Tiền ATM Sử Dụng Vòng Lặp For ...
Có thể bạn quan tâm
1. Cho bài toán rút tiền ATM như sau:
-
Nhập vào số tờ tiền trong máy ATM:
- Số tờ tiền 500k có trong ATM
- Số tờ tiền 200k có trong ATM
- Số tờ tiền 100k có trong ATM
- Số tờ tiền 50k có trong ATM
-
Nhập vào số tiền muốn rút và in ra số lượng các tờ tiền với các mệnh giá khác nhau.
-
Ví dụ: Ví dụ:
- Số tờ tiền 500k có trong ATM: 2
- Số tờ tiền 200k có trong ATM: 2
- Số tờ tiền 100k có trong ATM: 2
- Số tờ tiền 50k có trong ATM: 2
=> Nhập số tiền muốn rút: 2000k => ATM ko đủ tiền => Nhập số tiền muốn rút: 1500k => 500K - 2 tờ, 200k - 2 tờ, 100k - 1 tờ => Nhập số tiền muốn rút: 1555k => Số tiền muốn rút phải là bội số của 50
2. Phân tích bài toán và hướng giải:
-
Nhận các giá trị nhập vào từ Input và đưa các giá trị đó vào một Array.
-
Check xem ATM có đủ tiền để rút không, không đủ thì báo ATM phá sản.


-
Check xem số tiền cần rút có phải là bội số của 50,000 không, không phải thì báo ngân hàng không có tiền lẻ.

-
Rút ra n tờ tiền có mệnh giá lớn nhất chưa được tính đến trong ATM, với n = min(Số tiền cần rút / Mệnh giá tờ tiền lớn nhất, Số tờ có mệnh giá lớn nhất):
Giả sử cần rút 1,500,000 và tờ mệnh giá lớn nhất hiện tại là 500,000 thì số tờ expect là 3. Nếu số tờ còn lại là 2 thì ta chỉ rút 2 thôi (min(3, 2)), còn nếu số tờ còn lại là 4 thì ta rút 3 (min(3, 4)).
-
Sau khi thực hiện xong bước ở trên thì tính toán lại số tiền còn lại sẽ là: Số tiền cần rút (mới) = Số tiền cần rút (cũ) - n * Mệnh giá tiền lớn nhất. Nếu số tiền cần rút mà về 0 thì kết thúc quá trình rút tiền, còn không thì tiếp tục lặp lại bước rút tiền ở trên với việc mệnh giá "lớn nhất" mới được chuyển xuống mệnh giá tiếp theo.
3. Code demo
- Đầu tiên khởi tạo 1 file có tên index.php/index.html gồm form chứa input để nhập vào số tờ tiền.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <form action="atm.php" method="POST"> Nhập vào số tiền ATM đang có: <br><br> Số tờ 500k: <input type="number" name="500"><br><br> Số tờ 200k: <input type="number" name="200"><br><br> Số tờ 100k: <input type="number" name="100"><br><br> Số tờ 50k: <input type="number" name="50"><br><br> Nhập vào số tiền cần rút: <br><input type="text" name="input-money"><br><br> <input type="submit" value="Nhận tiền"> </form> </body> </html>- Tạo file có tên atm.php để gọi vào xử lý form trong file index.php.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <?php //get money input from customer - nhận số tiền mà khách hàng nhập vào và cho vào 1 mảng $getMoney = $_POST["input-money"]; $moneyArr = [500000, 200000, 100000, 50000]; //get money denominations in ATM - nhận mệnh giá tiền trong ATM và cho 1 mảng $atm500 = $_POST["500"]; $atm200 = $_POST["200"]; $atm100 = $_POST["100"]; $atm50 = $_POST["50"]; $atm = [$atm500, $atm200, $atm100, $atm50]; $sum = 0; for ($i = 0; $i < count($moneyArr); $i++) { $sum += $atm[$i] * $moneyArr[$i]; } if ($getMoney > $sum) { echo "ATM không đủ tiền!"; } elseif ($getMoney % 50000 != 0) { echo "Số tiền nhập vào phải là bội số của 50."; } else { if (($getMoney % 500000 == 0) && (floor($getMoney / 500000) <= $atm500)) { echo "Rút tiền thành công!" . "<br>Số tờ 500k: " . floor($getMoney / 500000); } else { for ($i = 0; $i < count($moneyArr); $i++) { $atmCheck = min($getMoney / $moneyArr[$i], $atm[$i]); $getMoney -= $atmCheck * $moneyArr[$i]; echo "Số tờ $moneyArr[$i]: $atmCheck <br>"; if ($getMoney == 0) { break; } } } } ?> </body> </html>Kết quả:
1. Kiểm tra số tiền trong ATM có đáp ứng số tiền muốn rút:
2. Kiểm tra số tiền muốn rút có phải là bội số của 50:
3. Nhập vào số tiền hợp lệ:
Chân thành cảm ơn @thangtd90 và @thangnt đã tài trợ chương trình này! 

𝔑𝔥ậ𝔱 𝔏𝔞𝔪
Từ khóa » Tính Tiền Atm
-
Cách Rút Tiền Ở Cây ATM đúng Cách, Không Lo Bị Nuốt Thẻ | Timo
-
Tiền Trong Thẻ ATM Có Lãi Suất Không Và Lãi Suất Bao Nhiêu | Timo
-
Một Số Thông Tin Về Thẻ Ngân Hàng
-
Cách Sử Dụng ATM | Seven Bank Ltd.
-
Rút Tiền Mặt Từ Thẻ Tín Dụng Là Gì? - HSBC VN
-
Hướng Dẫn Thanh Toán Nhanh Qua Thẻ ATM Nội địa Và Thẻ Thanh Toán ...
-
Lãi Của Thẻ Tín Dụng: Cách Tính Và Mẹo Sử Dụng Miễn Lãi - BIDV
-
Đồ Chơi Máy Tính Tiền ATM
-
Máy POS Tính Tiền Là Gì? Phí Quẹt Thẻ POS - TheBank
-
Thẻ Ngân Hàng: Tìm Hiểu Và Phân Loại Các Thẻ Thông Dụng Hiện Nay
-
[GIẢI ĐÁP] Cách Phân Biệt Thẻ Tín Dụng Và Thẻ ATM Chi Tiết Nhất
-
Hướng Dẫn Sử Dụng Thẻ Tín Dụng Techcombank
-
ATM Sacombank