|
|
|
ถามเรื่องการเก็บค่า ใน php จำนวนเงินกับแบงค์ จะต้องเก็บค่าแบบไหนถึงจะถูก |
|
|
|
|
|
|
|
ใจเย็นๆ นะครับ คงประมาณนี้ครับ
<?php
// array เก็บข้อมูลธนบัตร
$bank_notes = array(
100 => 1000, // ธนบัตรมูลค่า 100 บาท จำนวน 1000 ใบ
500 => 100, // ธนบัตรมูลค่า 500 บาท จำนวน 100 ใบ
1000 => 50, // ธนบัตรมูลค่า 1000 บาท จำนวน 50 ใบ
);
$sum = 0; // ผลรวมเงินในตู้ เริ่มต้น 0
// วนลูปข้อมูลธนบัตรในตู้ โดย $type เป็นเลขมูลค่าธนบัตร ส่วน $count คือจำนวนธนบัตร
foreach ($bank_notes as $type => $count) {
// เพิ่มผลรวม
$sum += $type * $count; // ประโยคนี้มีความหมายเดียวกันกับ $sum = $sum + ($type * $count);
}
// แสดงผลรวม
echo $sum;
|
|
|
|
|
Date :
2013-08-10 01:51:28 |
By :
cookiephp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
https://www.thaicreate.com/php/forum/053075.html
จริงๆ ลองค้นดูจะรู้ว่า โจทย์หลายๆ โจทย์ มีการตอบมาแล้วครับ ลองเอาไปปรับดูครับ
เท่าที่ดู ของพี่หนุ่ม น่าจะ work แต่ถ้าเรียน algolithm อาจจะต้องใช้ greedy อะไรพวกนั้น จะบอกว่าเรียนมาแล้วและก็ลืมแล้ว 555
|
|
|
|
|
Date :
2013-08-10 01:54:31 |
By :
PlaKriM |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณ คุณแมวของคุกกี้ คุณPlaKriM มากๆ ค่ะ
ขอถามอีกนิดนึงค่ะ แล้วถ้าเรารับจำนวน amount ( $amount = $_POST['amount']; )เงิน ที่ต้องการถอนมาจาก textbox แล้วจะต้องหัก $count ออกอ่ะค่ะ
if ((int)$amount == $amount && 100 <= $amount && $amount <= 20000 && $amount % 100 == 0) {
$m1000 = (int)($amount / 1000); $amount %= 1000;
$m500 = (int)($amount / 500); $amount %= 500;
$m100 = (int)($amount / 100); $amount %= 100;
echo "แบงค์ 1000 : $m1000 ใบ<br/>
แบงค์ 500 : $m500 ใบ<br/>
แบงค์ 100 : $m100 ใบ<br/>";
ประมาณว่า อยากให้ใส่เงินเข้าไปแล้วลบจำนวน แบงค์ใน $count ออก แล้วก็ save ทับค่า $count เดิมใน array อ่ะค่ะ
ฉันต้องเขียนเป็น function แล้ว return หรอคะ หรือควรทำยังไง
|
|
|
|
|
Date :
2013-08-11 01:19:08 |
By :
myoilnarak |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ประมาณนี้ครับ ลองทำความเข้าใจและประยุกต์ใช้นะครับ
<?php
// array เก็บข้อมูลธนบัตร
$bank_notes = array(
1000 => 50, // ธนบัตรมูลค่า 1000 บาท จำนวน 50 ใบ
500 => 100, // ธนบัตรมูลค่า 500 บาท จำนวน 100 ใบ
100 => 1000, // ธนบัตรมูลค่า 100 บาท จำนวน 1000 ใบ
);
function atm($withdraw)
{
// ให้สามารถเข้าถึง $bank_notes ที่อยู่ใน global scope (นอกฟังก์ชั่น) ได้
global $bank_notes;
// ผลรวมเงินในตู้ เริ่มต้น 0
$sum = 0;
// วนลูปข้อมูลธนบัตรในตู้ โดย $type เป็นเลขมูลค่าธนบัตร ส่วน $count คือจำนวนธนบัตร
foreach ($bank_notes as $type => $count) {
// เพิ่มผลรวม
$sum += $type * $count; // ประโยคนี้มีความหมายเดียวกันกับ $sum = $sum + ($type * $count);
}
// ตรวจสอบจำนวนเงินในตู้กับจำนวนเงินที่ถอน
if ($sum < $withdraw) {
echo "เงินในตู้ไม่พอจ่าย";
return;
}
$remain = $withdraw;
// วนลูปข้อมูลธนบัตรในตู้ โดย $type เป็นเลขมูลค่าธนบัตร ส่วน $count คือจำนวนธนบัตร
foreach ($bank_notes as $type => $count) {
// หาจำนวนธนบัตร มูลค่าธนบัตร $type ที่ต้องใช้
$n = (int)($remain / $type);
// หาก $n เป็น 0 แสดงว่าไม่ใช้ธนบัตรชนิดนี้
if (!$n) {
// ทำลูปรอบต่อไปได้เลย
continue;
}
// หากจำนวนธนบัตรมูลค่า $type ในตู้มีไม่พอ
if ($count < $n) {
// ให้จำนวนธนบัตรมูลค่า $type ที่จะใช้สำหรับการถอนครั้งนี้เท่ากับที่เหลือในตู้
$n = $count;
}
// อัพเดทจำนวนธนบัตรมูลค่า $type
$bank_notes[$type] -= $n;
// ลบจำนวนเงินที่ถอน
$remain -= $type * $n;
// หากถอนครบแล้ว ให้ออกจากลูปทันที
// เช่น ถอน 5000 และมีธนบัตร 1000 ในตู้เพียงพอที่จะจ่าย
// ก็ไม่จำเป็นต้องไปตรวจธนบัตรมูลค่าอื่นอีก
if (!$remain) {
break;
}
}
print_r($bank_notes);
}
echo '<pre>';
atm(5000);
atm(3500);
atm(1700);
atm(300);
atm(100);
// หากเป็นจำนวนเงินที่รับมาจากผู้ใช้
// atm($_POST['withdraw']);
|
ประวัติการแก้ไข 2013-08-11 01:56:08
|
|
|
|
Date :
2013-08-11 01:55:35 |
By :
cookiephp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|