โจทย์ทั้งหมด
ง่าย 0 ข้อที่แก้แล้ว อัตราผ่าน 0%

จัดรูปแบบใบแจ้งหนี้

พิมพ์รายการในใบแจ้งหนี้และยอดรวม โดยเก็บจำนวนเงินเป็นเซนต์แล้วแสดงเป็นดอลลาร์และเซนต์

สิ่งที่คุณจะได้เรียนรู้

  • เก็บเงินเป็นจำนวนเซนต์เต็ม
  • แสดงเซนต์เป็นดอลลาร์พร้อมทศนิยมสองหลัก
  • สร้างบรรทัดรายงานและยอดรวม

โจทย์

เงินมักเก็บเป็นจำนวนเซนต์เต็มเพื่อเลี่ยงข้อผิดพลาดจากการปัดเศษ และจะจัดรูปแบบเป็นดอลลาร์ตอนแสดงผลเท่านั้น

สำหรับแต่ละรายการ ให้เขียนบรรทัด <name> x<quantity> = <amount> โดย amount = quantity × ราคาเป็นเซนต์ หลังรายการทั้งหมด ให้เขียน Total = <amount> เป็นผลรวมของทุกบรรทัด

จัดรูปแบบทุกจำนวนเงินเป็นดอลลาร์ จุด และเซนต์สองหลักพอดี เช่น 5 → 0.05 และ 1250 → 12.50

จงเขียน format_invoice(names, quantities, cents)

อินพุต

names, quantities, cents: ลิสต์ที่สอดคล้องกันซึ่งอธิบายแต่ละรายการ

เอาต์พุต

คืนค่าบรรทัดของรายการ ตามด้วยบรรทัดยอดรวม

เงื่อนไข

0 ≤ จำนวนสินค้า ≤ 1,000

1 ≤ quantity ≤ 1,000; 0 ≤ cents ≤ 10^6

ตัวอย่าง

ตัวอย่างที่ 1
อินพุต:
cents = [250, 375]
names = ["Tea", "Cake"]
quantities = [2, 1]

ผลลัพธ์ที่คาดหวัง:
expected = ["Tea x2 = 5.00", "Cake x1 = 3.75", "Total = 8.75"]
อินพุต:
std::vector<long long> cents = {250, 375};
std::vector<std::string> names = {"Tea", "Cake"};
std::vector<long long> quantities = {2, 1};

ผลลัพธ์ที่คาดหวัง:
std::vector<std::string> expected = {"Tea x2 = 5.00", "Cake x1 = 3.75", "Total = 8.75"};
อินพุต:
long[] cents = new long[] {250, 375};
string[] names = new string[] {"Tea", "Cake"};
long[] quantities = new long[] {2, 1};

ผลลัพธ์ที่คาดหวัง:
string[] expected = new string[] {"Tea x2 = 5.00", "Cake x1 = 3.75", "Total = 8.75"};

คำอธิบาย

2 × 250 = 500 เซนต์คือ 5.00 และ 375 เซนต์คือ 3.75 ยอดรวมคือ 875 เซนต์: ["Tea x2 = 5.00", "Cake x1 = 3.75", "Total = 8.75"]

ตัวอย่างที่ 2
อินพุต:
cents = [5]
names = ["Gum"]
quantities = [3]

ผลลัพธ์ที่คาดหวัง:
expected = ["Gum x3 = 0.15", "Total = 0.15"]
อินพุต:
std::vector<long long> cents = {5};
std::vector<std::string> names = {"Gum"};
std::vector<long long> quantities = {3};

ผลลัพธ์ที่คาดหวัง:
std::vector<std::string> expected = {"Gum x3 = 0.15", "Total = 0.15"};
อินพุต:
long[] cents = new long[] {5};
string[] names = new string[] {"Gum"};
long[] quantities = new long[] {3};

ผลลัพธ์ที่คาดหวัง:
string[] expected = new string[] {"Gum x3 = 0.15", "Total = 0.15"};

คำอธิบาย

3 × 5 = 15 เซนต์ เขียนเป็น 0.15: ["Gum x3 = 0.15", "Total = 0.15"]

แนวทางการแก้

ลองทำเองก่อน แล้วค่อยเปิดคำใบ้ทีละข้อ

คำใบ้ 1

คำนวณทุกอย่างเป็นจำนวนเซนต์เต็ม

คำใบ้ 2

แยกเซนต์เป็นดอลลาร์ (cents / 100) และเศษ (cents % 100)

คำใบ้ 3

แสดงเซนต์เป็นสองหลักเสมอ 5 เซนต์จึงเป็น 0.05

ความซับซ้อนที่คาดหวัง

เวลา O(จำนวนสินค้า), หน่วยความจำเพิ่ม O(จำนวนสินค้า)

แหล่งอ้างอิง

โจทย์นี้ปรับให้เหมาะกับ CodeUtility กรุณาทำตามคำชี้แจงและข้อจำกัดด้านบน

เรียนรู้จากคนอื่น

แนวทางจากชุมชน

ยังไม่มีวิธีทำที่เผยแพร่ ลองแก้โจทย์นี้เพื่อแชร์วิธีแรก