โจทย์เขียนโปรแกรม โปรแกรมแลกเหรียญ

วันที่โพสต์

หมวดหมู่

ตัวอย่างโจทย์การเขียนโปรแกรม หัวข้อ โปรแกรมแลกเหรียญ พร้อมกับแนวคำตอบ และคำอธิบาย

ท่านสามารถนำไปใช้ออกข้อสอบ ทำเป็นแบบฝึกหัด หรือใช้แข่งขันในกิจกรรมรายการต่างๆ เช่น งานศิลปหัตถกรรมนักเรียน หรือการแข่งขันการเขียนโปรแกรมอื่นๆ ได้ โดยปรับเนื้อหาของโจทย์

โจทย์

หอพักกาญจนาต้องการอำนวยความสะดวกให้กับสมาชิกภายในหอพัก โดยการนำเครื่องแลกเหรียญมาติดตั้ง หลังจากที่สมาชิกในหอพักแจ้งมาว่าพวกเขาไม่สามารถหาเงินเหรียญมาหยอดเพื่อใช้งานตู้กดน้ำอัตโนมัติได้ โดยที่สมาชิกนั้นสามารถสแกน 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 ของจำนวนเหรียญต่างๆ

เนื้อหา
ที่เกี่ยวข้อง