ตัวอย่างโจทย์การเขียนโปรแกรม หัวข้อ โปรแกรมแลกเหรียญ พร้อมกับแนวคำตอบ และคำอธิบาย
ท่านสามารถนำไปใช้ออกข้อสอบ ทำเป็นแบบฝึกหัด หรือใช้แข่งขันในกิจกรรมรายการต่างๆ เช่น งานศิลปหัตถกรรมนักเรียน หรือการแข่งขันการเขียนโปรแกรมอื่นๆ ได้ โดยปรับเนื้อหาของโจทย์
โจทย์
หอพักกาญจนาต้องการอำนวยความสะดวกให้กับสมาชิกภายในหอพัก โดยการนำเครื่องแลกเหรียญมาติดตั้ง หลังจากที่สมาชิกในหอพักแจ้งมาว่าพวกเขาไม่สามารถหาเงินเหรียญมาหยอดเพื่อใช้งานตู้กดน้ำอัตโนมัติได้ โดยที่สมาชิกนั้นสามารถสแกน QR Code ที่เครื่องแลกเหรียญ จากนั้นทำการโอนเงินในจำนวนที่ต้องการแลก ตัวเครื่องสามารถแลกเหรียญ 10 , 5 , 2 และ 1 บาท โดยที่ต้องใช้จำนวนเหรียญแต่ละชนิดให้น้อยที่สุดเท่าที่เป็นไปได้เสมอ
ตัวอย่างที่ 1 หากต้องการแลกเงิน 20 บาท ก็จะได้เหรียญ 10 บาทจำนวน 2 เหรียญ ,, แต่ถ้าหากเราใช้เหรียญ 1 บาทจำนวน 20 เหรียญ ก็จะทำให้เราใช้เหรียญชนิดนั้นมากเกินความจำเป็น ซึ่งเป็นแนวทางที่ไม่เหมาะสม เพราะโจทย์ระบุว่าต้องใช้จำนวนเหรียญแต่ละชนิดให้น้อยที่สุดเท่าที่เป็นไปได้เสมอ
ตัวอย่างที่ 2 หากต้องการแลกเงิน 37 บาท ก็จะได้ เหรียญ 10 บาทจำนวน 3 เหรียญ เหรียญ 5 บาทจำนวน 1 เหรียญ และเหรียญ 2 บาท อีก 1 เหรียญ
งานของคุณ
รับข้อมูลจำนวนเงินที่ต้องการแลก และแสดงเหรียญชนิดต่างๆ ที่สามารถแลกได้ ตามจำนวนเงินที่ผู้ใช้ระบุ
ข้อมูลนำเข้า
ระบุจำนวนเงิน
ข้อมูลส่งออก
แสดงชนิดเหรียญ พร้อมจำนวนเหรียญ ที่เท่ากับจำนวนเงินที่ระบุไว้ โดยที่ต้องใช้จำนวนเหรียญแต่ละชนิดให้น้อยที่สุดเท่าที่เป็นไปได้เสมอ
ตัวอย่างข้อมูลเข้า | ตัวอย่างข้อมูลออก |
ป้อนจำนวนเงิน : 124 | จำนวนเหรียญต่างๆ ที่เป็นไปได้: เหรียญ 10 บาท : 12 เหรียญ เหรียญ 2 บาท : 2 เหรียญ |
แนวคำตอบในภาษา Python
def calculate_coins(amount):
#ฟังก์ชันนี้รับจำนวนเงินและแสดงผลลัพธ์เป็นจำนวนเหรียญต่างๆ ที่เป็นไปได้
coins = {
"10": 0,
"5": 0,
"2": 0,
"1": 0,
}
while amount >= 10:
coins["10"] += 1
amount -= 10
while amount >= 5:
coins["5"] += 1
amount -= 5
while amount >= 2:
coins["2"] += 1
amount -= 2
while amount >= 1:
coins["1"] += 1
amount -= 1
return coins
# ตัวอย่างการใช้งาน
amount = int(input("ป้อนจำนวนเงิน: "))
coins = calculate_coins(amount)
print(f"จำนวนเหรียญต่างๆ ที่เป็นไปได้:")
for coin, count in coins.items():
if count > 0:
print(f"{coin} บาท: {count} เหรียญ")
คำอธิบาย:
- ฟังก์ชัน
calculate_coins(amount)
รับจำนวนเงินเป็น input และ return dictionary ของจำนวนเหรียญต่างๆ - โปรแกรมจะวนลูป while เพื่อหาจำนวนเหรียญแต่ละประเภท
- ผลลัพธ์จะแสดงเป็นตัวแปรชนิด dictionary ของจำนวนเหรียญต่างๆ