#include <stdio.h> // นำเข้าไลบรารีมาตรฐานสำหรับฟังก์ชัน input/output เช่น printf() และ scanf()
#define MENU_ITEMS 10 // กำหนดค่าคงที่ MENU_ITEMS เป็น 10 แทนจำนวนเมนูเครื่องดื่ม
#define TOPPING_ITEMS 5 // กำหนดค่าคงที่ TOPPING_ITEMS เป็น 5 แทนจำนวนท็อปปิ้ง
#define SIZE_OPTIONS 3 // กำหนดค่าคงที่ SIZE_OPTIONS เป็น 3 แทนจำนวนขนาดแก้ว
// อาร์เรย์ที่เก็บชื่อเมนูเครื่องดื่ม
const char *menu[MENU_ITEMS] = {
"ชานม", "ชาเขียว", "ชาไทย", "โกโก้", "มัทฉะ",
"เผือก", "นมสด", "กาแฟ", "นมชมพู", "น้ำผึ้งมะนาว"
};
// อาร์เรย์ที่เก็บราคาของเมนูเครื่องดื่มแต่ละรายการ
const int menu_prices[MENU_ITEMS] = {30, 30, 35, 40, 45, 35, 30, 40, 30, 35};
// อาร์เรย์ที่เก็บชื่อท็อปปิ้ง
const char *toppings[TOPPING_ITEMS] = {"ไข่มุก", "วุ้นมะพร้าว", "เฉาก๊วย", "พุดดิ้ง", "ถั่วแดง"};
// อาร์เรย์ที่เก็บราคาของท็อปปิ้งแต่ละรายการ
const int topping_prices[TOPPING_ITEMS] = {5, 5, 5, 10, 10};
// อาร์เรย์ที่เก็บชื่อขนาดแก้ว
const char *sizes[SIZE_OPTIONS] = {"เล็ก", "กลาง", "ใหญ่"};
// อาร์เรย์ที่เก็บราคาของแต่ละขนาดแก้ว
const int size_prices[SIZE_OPTIONS] = {0, 5, 10};
// อาร์เรย์ที่เก็บชื่อระดับความหวาน
const char *sweetness_levels[] = {"ไม่หวาน", "25%", "50%", "75%", "100%"};
// ฟังก์ชันสำหรับพิมพ์เส้นแบ่ง
void print_line() {
printf("------------------------------------------\n"); // พิมพ์เส้นแบ่ง }
// ฟังก์ชันสำหรับแสดงเมนูเครื่องดื่ม
void print_menu() {
print_line(); // พิมพ์เส้นแบ่ง
printf("--- เมนูเครื่องดื่ม ---\n"); // แสดงหัวข้อเมนู for (int i = 0; i < MENU_ITEMS; i++) { // วนลูปเพื่อแสดงเมนูแต่ละรายการ
printf("%d. %s (%d บาท)\n", i
+ 1, menu
[i
], menu_prices
[i
]); // แสดงหมายเลข, ชื่อเมนู, และราคา }
print_line(); // พิมพ์เส้นแบ่ง
}
// ฟังก์ชันสำหรับแสดงขนาดแก้ว
void print_sizes() {
print_line(); // พิมพ์เส้นแบ่ง
printf("--- ขนาดแก้ว ---\n"); // แสดงหัวข้อขนาดแก้ว for (int i = 0; i < SIZE_OPTIONS; i++) { // วนลูปเพื่อแสดงขนาดแก้วแต่ละรายการ
printf("%d. %s (+%d บาท)\n", i
+ 1, sizes
[i
], size_prices
[i
]); // แสดงหมายเลข, ชื่อขนาด, และราคาเพิ่ม }
print_line(); // พิมพ์เส้นแบ่ง
}
// ฟังก์ชันสำหรับแสดงระดับความหวาน
void print_sweetness_levels() {
print_line(); // พิมพ์เส้นแบ่ง
printf("--- ระดับความหวาน ---\n"); // แสดงหัวข้อระดับความหวาน for (int i = 0; i < 5; i++) { // วนลูปเพื่อแสดงระดับความหวานแต่ละรายการ
printf("%d. %s\n", i
+ 1, sweetness_levels
[i
]); // แสดงหมายเลขและระดับความหวาน }
print_line(); // พิมพ์เส้นแบ่ง
}
// ฟังก์ชันสำหรับแสดงท็อปปิ้ง
void print_toppings() {
print_line(); // พิมพ์เส้นแบ่ง
printf("--- ท็อปปิ้ง ---\n"); // แสดงหัวข้อท็อปปิ้ง for (int i = 0; i < TOPPING_ITEMS; i++) { // วนลูปเพื่อแสดงท็อปปิ้งแต่ละรายการ
printf("%d. %s (+%d บาท)\n", i
+ 1, toppings
[i
], topping_prices
[i
]); // แสดงหมายเลข, ชื่อท็อปปิ้ง, และราคาเพิ่ม }
print_line(); // พิมพ์เส้นแบ่ง
}
// ฟังก์ชันสำหรับพิมพ์ใบเสร็จ
void print_receipt(int menu_choice, int size_choice, int sweetness_choice, int topping_count, int total_price) {
print_line(); // พิมพ์เส้นแบ่ง
printf("\n--- สรุปรายการสั่งซื้อ ---\n"); // แสดงหัวข้อใบเสร็จ printf("เครื่องดื่ม: %s\n", menu
[menu_choice
]); // แสดงชื่อเครื่องดื่มที่เลือก printf("ขนาด: %s\n", sizes
[size_choice
]); // แสดงขนาดแก้วที่เลือก printf("ระดับความหวาน: %s\n", sweetness_levels
[sweetness_choice
]); // แสดงระดับความหวานที่เลือก printf("ท็อปปิ้ง %d รายการ\n", topping_count
); // แสดงจำนวนท็อปปิ้งที่เลือก printf("ราคาสุทธิ: %d บาท\n", total_price
); // แสดงราคารวม print_line(); // พิมพ์เส้นแบ่ง
printf("ขอบคุณที่ใช้บริการ!\n"); // แสดงข้อความขอบคุณ }
// ฟังก์ชันหลักของโปรแกรม
int main() {
// ประกาศตัวแปรเพื่อเก็บข้อมูลการเลือกของผู้ใช้
int menu_choice, size_choice, sweetness_choice, topping_choice, topping_count = 0;
int total_price = 0; // ประกาศตัวแปรสำหรับเก็บราคารวม
char add_more; // ประกาศตัวแปรสำหรับเก็บคำตอบว่าต้องการเพิ่มท็อปปิ้งหรือไม่
// แสดงเมนูเครื่องดื่ม
print_menu();
// รับค่าเมนูจากผู้ใช้
printf("เลือกเมนูเครื่องดื่ม (1-10): "); // ตรวจสอบการป้อนข้อมูลว่าเป็นตัวเลขและในช่วงที่ถูกต้อง (1-10)
while (scanf("%d", &menu_choice) != 1 || menu_choice < 1 || menu_choice > 10) {
while (getchar() != '\n'); // เคลียร์ buffer
printf("กรุณาเลือกเมนูจาก 1 ถึง 10 เท่านั้น: "); }
menu_choice--; // ลดค่าลง 1 เพื่อให้ตรงกับ index ในอาร์เรย์
total_price += menu_prices[menu_choice]; // เพิ่มราคาเมนูลงในราคารวม
// แสดงขนาดแก้ว
print_sizes();
// รับค่าขนาดแก้วจากผู้ใช้
printf("เลือกขนาดแก้ว (1-3): "); // ตรวจสอบการป้อนข้อมูลว่าเป็นตัวเลขและในช่วงที่ถูกต้อง (1-3)
while (scanf("%d", &size_choice) != 1 || size_choice < 1 || size_choice > 3) {
while (getchar() != '\n'); // เคลียร์ buffer
printf("กรุณาเลือกขนาดแก้วจาก 1 ถึง 3 เท่านั้น: "); }
size_choice--; // ลดค่าลง 1 เพื่อให้ตรงกับ index ในอาร์เรย์
total_price += size_prices[size_choice]; // เพิ่มราคาขนาดแก้วลงในราคารวม
// แสดงระดับความหวาน
print_sweetness_levels();
// รับค่าระดับความหวานจากผู้ใช้
printf("เลือกระดับความหวาน (1-5): "); // ตรวจสอบการป้อนข้อมูลว่าเป็นตัวเลขและในช่วงที่ถูกต้อง (1-5)
while (scanf("%d", &sweetness_choice) != 1 || sweetness_choice < 1 || sweetness_choice > 5) {
while (getchar() != '\n'); // เคลียร์ buffer
printf("กรุณาเลือกระดับความหวานจาก 1 ถึง 5 เท่านั้น: "); }
sweetness_choice--; // ลดค่าลง 1 เพื่อให้ตรงกับ index ในอาร์เรย์
// วนลูปสำหรับการเลือกท็อปปิ้ง
do {
// แสดงท็อปปิ้งที่เลือกได้
print_toppings();
// รับค่าท็อปปิ้งจากผู้ใช้
printf("เลือกท็อปปิ้ง (1-5) หรือ 0 เพื่อข้าม: "); // ตรวจสอบการป้อนข้อมูลว่าเป็นตัวเลขและในช่วงที่ถูกต้อง (0-5)
while (scanf("%d", &topping_choice) != 1 || topping_choice < 0 || topping_choice > 5) {
while (getchar() != '\n'); // เคลียร์ buffer
printf("กรุณาเลือกท็อปปิ้งจาก 0 ถึง 5 เท่านั้น: "); }
// ถ้าผู้ใช้เลือกท็อปปิ้ง
if (topping_choice > 0 && topping_choice <= TOPPING_ITEMS) {
total_price += topping_prices[topping_choice - 1]; // เพิ่มราคาท็อปปิ้งลงในราคารวม
topping_count++; // เพิ่มจำนวนท็อปปิ้ง
printf("ต้องการเพิ่มอีกหรือไม่? (y/n): "); scanf(" %c", &add_more); // รับคำตอบว่าต้องการเพิ่มอีกหรือไม่
} else {
add_more = 'n'; // หากเลือก 0 ให้หยุดเพิ่มท็อปปิ้ง
}
} while (add_more == 'y'); // วนลูปถ้าผู้ใช้ต้องการเพิ่มท็อปปิ้งต่อ
// แสดงใบเสร็จสรุป
print_receipt(menu_choice, size_choice, sweetness_choice, topping_count, total_price);
return 0; // ส่งค่าผลลัพธ์กลับจากฟังก์ชัน main
}
I2luY2x1ZGUgPHN0ZGlvLmg+IC8vIOC4meC4s+C5gOC4guC5ieC4suC5hOC4peC4muC4o+C4suC4o+C4teC4oeC4suC4leC4o+C4kOC4suC4meC4quC4s+C4q+C4o+C4seC4muC4n+C4seC4h+C4geC5jOC4iuC4seC4mSBpbnB1dC9vdXRwdXQg4LmA4LiK4LmI4LiZIHByaW50ZigpIOC5geC4peC4sCBzY2FuZigpCgojZGVmaW5lIE1FTlVfSVRFTVMgMTAgLy8g4LiB4Liz4Lir4LiZ4LiU4LiE4LmI4Liy4LiE4LiH4LiX4Li14LmIIE1FTlVfSVRFTVMg4LmA4Lib4LmH4LiZIDEwIOC5geC4l+C4meC4iOC4s+C4meC4p+C4meC5gOC4oeC4meC4ueC5gOC4hOC4o+C4t+C5iOC4reC4h+C4lOC4t+C5iOC4oQojZGVmaW5lIFRPUFBJTkdfSVRFTVMgNSAvLyDguIHguLPguKvguJnguJTguITguYjguLLguITguIfguJfguLXguYggVE9QUElOR19JVEVNUyDguYDguJvguYfguJkgNSDguYHguJfguJnguIjguLPguJnguKfguJnguJfguYfguK3guJvguJvguLTguYnguIcKI2RlZmluZSBTSVpFX09QVElPTlMgMyAvLyDguIHguLPguKvguJnguJTguITguYjguLLguITguIfguJfguLXguYggU0laRV9PUFRJT05TIOC5gOC4m+C5h+C4mSAzIOC5geC4l+C4meC4iOC4s+C4meC4p+C4meC4guC4meC4suC4lOC5geC4geC5ieC4pwoKLy8g4Lit4Liy4Lij4LmM4LmA4Lij4Lii4LmM4LiX4Li14LmI4LmA4LiB4LmH4Lia4LiK4Li34LmI4Lit4LmA4Lih4LiZ4Li54LmA4LiE4Lij4Li34LmI4Lit4LiH4LiU4Li34LmI4LihCmNvbnN0IGNoYXIgKm1lbnVbTUVOVV9JVEVNU10gPSB7CiAgICAi4LiK4Liy4LiZ4LihIiwgIuC4iuC4suC5gOC4guC4teC4ouC4pyIsICLguIrguLLguYTguJfguKIiLCAi4LmC4LiB4LmC4LiB4LmJIiwgIuC4oeC4seC4l+C4ieC4sCIsCiAgICAi4LmA4Lic4Li34Lit4LiBIiwgIuC4meC4oeC4quC4lCIsICLguIHguLLguYHguJ8iLCAi4LiZ4Lih4LiK4Lih4Lie4Li5IiwgIuC4meC5ieC4s+C4nOC4tuC5ieC4h+C4oeC4sOC4meC4suC4pyIKfTsKLy8g4Lit4Liy4Lij4LmM4LmA4Lij4Lii4LmM4LiX4Li14LmI4LmA4LiB4LmH4Lia4Lij4Liy4LiE4Liy4LiC4Lit4LiH4LmA4Lih4LiZ4Li54LmA4LiE4Lij4Li34LmI4Lit4LiH4LiU4Li34LmI4Lih4LmB4LiV4LmI4Lil4Liw4Lij4Liy4Lii4LiB4Liy4LijCmNvbnN0IGludCBtZW51X3ByaWNlc1tNRU5VX0lURU1TXSA9IHszMCwgMzAsIDM1LCA0MCwgNDUsIDM1LCAzMCwgNDAsIDMwLCAzNX07CgovLyDguK3guLLguKPguYzguYDguKPguKLguYzguJfguLXguYjguYDguIHguYfguJrguIrguLfguYjguK3guJfguYfguK3guJvguJvguLTguYnguIcKY29uc3QgY2hhciAqdG9wcGluZ3NbVE9QUElOR19JVEVNU10gPSB7IuC5hOC4guC5iOC4oeC4uOC4gSIsICLguKfguLjguYnguJnguKHguLDguJ7guKPguYnguLLguKciLCAi4LmA4LiJ4Liy4LiB4LmK4Lin4LiiIiwgIuC4nuC4uOC4lOC4lOC4tOC5ieC4hyIsICLguJbguLHguYjguKfguYHguJTguIcifTsKLy8g4Lit4Liy4Lij4LmM4LmA4Lij4Lii4LmM4LiX4Li14LmI4LmA4LiB4LmH4Lia4Lij4Liy4LiE4Liy4LiC4Lit4LiH4LiX4LmH4Lit4Lib4Lib4Li04LmJ4LiH4LmB4LiV4LmI4Lil4Liw4Lij4Liy4Lii4LiB4Liy4LijCmNvbnN0IGludCB0b3BwaW5nX3ByaWNlc1tUT1BQSU5HX0lURU1TXSA9IHs1LCA1LCA1LCAxMCwgMTB9OwoKLy8g4Lit4Liy4Lij4LmM4LmA4Lij4Lii4LmM4LiX4Li14LmI4LmA4LiB4LmH4Lia4LiK4Li34LmI4Lit4LiC4LiZ4Liy4LiU4LmB4LiB4LmJ4LinCmNvbnN0IGNoYXIgKnNpemVzW1NJWkVfT1BUSU9OU10gPSB7IuC5gOC4peC5h+C4gSIsICLguIHguKXguLLguIciLCAi4LmD4Lir4LiN4LmIIn07Ci8vIOC4reC4suC4o+C5jOC5gOC4o+C4ouC5jOC4l+C4teC5iOC5gOC4geC5h+C4muC4o+C4suC4hOC4suC4guC4reC4h+C5geC4leC5iOC4peC4sOC4guC4meC4suC4lOC5geC4geC5ieC4pwpjb25zdCBpbnQgc2l6ZV9wcmljZXNbU0laRV9PUFRJT05TXSA9IHswLCA1LCAxMH07CgovLyDguK3guLLguKPguYzguYDguKPguKLguYzguJfguLXguYjguYDguIHguYfguJrguIrguLfguYjguK3guKPguLDguJTguLHguJrguITguKfguLLguKHguKvguKfguLLguJkKY29uc3QgY2hhciAqc3dlZXRuZXNzX2xldmVsc1tdID0geyLguYTguKHguYjguKvguKfguLLguJkiLCAiMjUlIiwgIjUwJSIsICI3NSUiLCAiMTAwJSJ9OwoKLy8g4Lif4Lix4LiH4LiB4LmM4LiK4Lix4LiZ4Liq4Liz4Lir4Lij4Lix4Lia4Lie4Li04Lih4Lie4LmM4LmA4Liq4LmJ4LiZ4LmB4Lia4LmI4LiHCnZvaWQgcHJpbnRfbGluZSgpIHsKICAgIHByaW50ZigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsgLy8g4Lie4Li04Lih4Lie4LmM4LmA4Liq4LmJ4LiZ4LmB4Lia4LmI4LiHCn0KCi8vIOC4n+C4seC4h+C4geC5jOC4iuC4seC4meC4quC4s+C4q+C4o+C4seC4muC5geC4quC4lOC4h+C5gOC4oeC4meC4ueC5gOC4hOC4o+C4t+C5iOC4reC4h+C4lOC4t+C5iOC4oQp2b2lkIHByaW50X21lbnUoKSB7CiAgICBwcmludF9saW5lKCk7IC8vIOC4nuC4tOC4oeC4nuC5jOC5gOC4quC5ieC4meC5geC4muC5iOC4hwogICAgcHJpbnRmKCItLS0g4LmA4Lih4LiZ4Li54LmA4LiE4Lij4Li34LmI4Lit4LiH4LiU4Li34LmI4LihIC0tLVxuIik7IC8vIOC5geC4quC4lOC4h+C4q+C4seC4p+C4guC5ieC4reC5gOC4oeC4meC4uQogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRU5VX0lURU1TOyBpKyspIHsgLy8g4Lin4LiZ4Lil4Li54Lib4LmA4Lie4Li34LmI4Lit4LmB4Liq4LiU4LiH4LmA4Lih4LiZ4Li54LmB4LiV4LmI4Lil4Liw4Lij4Liy4Lii4LiB4Liy4LijCiAgICAgICAgcHJpbnRmKCIlZC4gJXMgKCVkIOC4muC4suC4lylcbiIsIGkgKyAxLCBtZW51W2ldLCBtZW51X3ByaWNlc1tpXSk7IC8vIOC5geC4quC4lOC4h+C4q+C4oeC4suC4ouC5gOC4peC4giwg4LiK4Li34LmI4Lit4LmA4Lih4LiZ4Li5LCDguYHguKXguLDguKPguLLguITguLIKICAgIH0KICAgIHByaW50X2xpbmUoKTsgLy8g4Lie4Li04Lih4Lie4LmM4LmA4Liq4LmJ4LiZ4LmB4Lia4LmI4LiHCn0KCi8vIOC4n+C4seC4h+C4geC5jOC4iuC4seC4meC4quC4s+C4q+C4o+C4seC4muC5geC4quC4lOC4h+C4guC4meC4suC4lOC5geC4geC5ieC4pwp2b2lkIHByaW50X3NpemVzKCkgewogICAgcHJpbnRfbGluZSgpOyAvLyDguJ7guLTguKHguJ7guYzguYDguKrguYnguJnguYHguJrguYjguIcKICAgIHByaW50ZigiLS0tIOC4guC4meC4suC4lOC5geC4geC5ieC4pyAtLS1cbiIpOyAvLyDguYHguKrguJTguIfguKvguLHguKfguILguYnguK3guILguJnguLLguJTguYHguIHguYnguKcKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgU0laRV9PUFRJT05TOyBpKyspIHsgLy8g4Lin4LiZ4Lil4Li54Lib4LmA4Lie4Li34LmI4Lit4LmB4Liq4LiU4LiH4LiC4LiZ4Liy4LiU4LmB4LiB4LmJ4Lin4LmB4LiV4LmI4Lil4Liw4Lij4Liy4Lii4LiB4Liy4LijCiAgICAgICAgcHJpbnRmKCIlZC4gJXMgKCslZCDguJrguLLguJcpXG4iLCBpICsgMSwgc2l6ZXNbaV0sIHNpemVfcHJpY2VzW2ldKTsgLy8g4LmB4Liq4LiU4LiH4Lir4Lih4Liy4Lii4LmA4Lil4LiCLCDguIrguLfguYjguK3guILguJnguLLguJQsIOC5geC4peC4sOC4o+C4suC4hOC4suC5gOC4nuC4tOC5iOC4oQogICAgfQogICAgcHJpbnRfbGluZSgpOyAvLyDguJ7guLTguKHguJ7guYzguYDguKrguYnguJnguYHguJrguYjguIcKfQoKLy8g4Lif4Lix4LiH4LiB4LmM4LiK4Lix4LiZ4Liq4Liz4Lir4Lij4Lix4Lia4LmB4Liq4LiU4LiH4Lij4Liw4LiU4Lix4Lia4LiE4Lin4Liy4Lih4Lir4Lin4Liy4LiZCnZvaWQgcHJpbnRfc3dlZXRuZXNzX2xldmVscygpIHsKICAgIHByaW50X2xpbmUoKTsgLy8g4Lie4Li04Lih4Lie4LmM4LmA4Liq4LmJ4LiZ4LmB4Lia4LmI4LiHCiAgICBwcmludGYoIi0tLSDguKPguLDguJTguLHguJrguITguKfguLLguKHguKvguKfguLLguJkgLS0tXG4iKTsgLy8g4LmB4Liq4LiU4LiH4Lir4Lix4Lin4LiC4LmJ4Lit4Lij4Liw4LiU4Lix4Lia4LiE4Lin4Liy4Lih4Lir4Lin4Liy4LiZCiAgICBmb3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykgeyAvLyDguKfguJnguKXguLnguJvguYDguJ7guLfguYjguK3guYHguKrguJTguIfguKPguLDguJTguLHguJrguITguKfguLLguKHguKvguKfguLLguJnguYHguJXguYjguKXguLDguKPguLLguKLguIHguLLguKMKICAgICAgICBwcmludGYoIiVkLiAlc1xuIiwgaSArIDEsIHN3ZWV0bmVzc19sZXZlbHNbaV0pOyAvLyDguYHguKrguJTguIfguKvguKHguLLguKLguYDguKXguILguYHguKXguLDguKPguLDguJTguLHguJrguITguKfguLLguKHguKvguKfguLLguJkKICAgIH0KICAgIHByaW50X2xpbmUoKTsgLy8g4Lie4Li04Lih4Lie4LmM4LmA4Liq4LmJ4LiZ4LmB4Lia4LmI4LiHCn0KCi8vIOC4n+C4seC4h+C4geC5jOC4iuC4seC4meC4quC4s+C4q+C4o+C4seC4muC5geC4quC4lOC4h+C4l+C5h+C4reC4m+C4m+C4tOC5ieC4hwp2b2lkIHByaW50X3RvcHBpbmdzKCkgewogICAgcHJpbnRfbGluZSgpOyAvLyDguJ7guLTguKHguJ7guYzguYDguKrguYnguJnguYHguJrguYjguIcKICAgIHByaW50ZigiLS0tIOC4l+C5h+C4reC4m+C4m+C4tOC5ieC4hyAtLS1cbiIpOyAvLyDguYHguKrguJTguIfguKvguLHguKfguILguYnguK3guJfguYfguK3guJvguJvguLTguYnguIcKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgVE9QUElOR19JVEVNUzsgaSsrKSB7IC8vIOC4p+C4meC4peC4ueC4m+C5gOC4nuC4t+C5iOC4reC5geC4quC4lOC4h+C4l+C5h+C4reC4m+C4m+C4tOC5ieC4h+C5geC4leC5iOC4peC4sOC4o+C4suC4ouC4geC4suC4owogICAgICAgIHByaW50ZigiJWQuICVzICgrJWQg4Lia4Liy4LiXKVxuIiwgaSArIDEsIHRvcHBpbmdzW2ldLCB0b3BwaW5nX3ByaWNlc1tpXSk7IC8vIOC5geC4quC4lOC4h+C4q+C4oeC4suC4ouC5gOC4peC4giwg4LiK4Li34LmI4Lit4LiX4LmH4Lit4Lib4Lib4Li04LmJ4LiHLCDguYHguKXguLDguKPguLLguITguLLguYDguJ7guLTguYjguKEKICAgIH0KICAgIHByaW50X2xpbmUoKTsgLy8g4Lie4Li04Lih4Lie4LmM4LmA4Liq4LmJ4LiZ4LmB4Lia4LmI4LiHCn0KCi8vIOC4n+C4seC4h+C4geC5jOC4iuC4seC4meC4quC4s+C4q+C4o+C4seC4muC4nuC4tOC4oeC4nuC5jOC5g+C4muC5gOC4quC4o+C5h+C4iAp2b2lkIHByaW50X3JlY2VpcHQoaW50IG1lbnVfY2hvaWNlLCBpbnQgc2l6ZV9jaG9pY2UsIGludCBzd2VldG5lc3NfY2hvaWNlLCBpbnQgdG9wcGluZ19jb3VudCwgaW50IHRvdGFsX3ByaWNlKSB7CiAgICBwcmludF9saW5lKCk7IC8vIOC4nuC4tOC4oeC4nuC5jOC5gOC4quC5ieC4meC5geC4muC5iOC4hwogICAgcHJpbnRmKCJcbi0tLSDguKrguKPguLjguJvguKPguLLguKLguIHguLLguKPguKrguLHguYjguIfguIvguLfguYnguK0gLS0tXG4iKTsgLy8g4LmB4Liq4LiU4LiH4Lir4Lix4Lin4LiC4LmJ4Lit4LmD4Lia4LmA4Liq4Lij4LmH4LiICiAgICBwcmludGYoIuC5gOC4hOC4o+C4t+C5iOC4reC4h+C4lOC4t+C5iOC4oTogJXNcbiIsIG1lbnVbbWVudV9jaG9pY2VdKTsgLy8g4LmB4Liq4LiU4LiH4LiK4Li34LmI4Lit4LmA4LiE4Lij4Li34LmI4Lit4LiH4LiU4Li34LmI4Lih4LiX4Li14LmI4LmA4Lil4Li34Lit4LiBCiAgICBwcmludGYoIuC4guC4meC4suC4lDogJXNcbiIsIHNpemVzW3NpemVfY2hvaWNlXSk7IC8vIOC5geC4quC4lOC4h+C4guC4meC4suC4lOC5geC4geC5ieC4p+C4l+C4teC5iOC5gOC4peC4t+C4reC4gQogICAgcHJpbnRmKCLguKPguLDguJTguLHguJrguITguKfguLLguKHguKvguKfguLLguJk6ICVzXG4iLCBzd2VldG5lc3NfbGV2ZWxzW3N3ZWV0bmVzc19jaG9pY2VdKTsgLy8g4LmB4Liq4LiU4LiH4Lij4Liw4LiU4Lix4Lia4LiE4Lin4Liy4Lih4Lir4Lin4Liy4LiZ4LiX4Li14LmI4LmA4Lil4Li34Lit4LiBCiAgICBwcmludGYoIuC4l+C5h+C4reC4m+C4m+C4tOC5ieC4hyAlZCDguKPguLLguKLguIHguLLguKNcbiIsIHRvcHBpbmdfY291bnQpOyAvLyDguYHguKrguJTguIfguIjguLPguJnguKfguJnguJfguYfguK3guJvguJvguLTguYnguIfguJfguLXguYjguYDguKXguLfguK3guIEKICAgIHByaW50Zigi4Lij4Liy4LiE4Liy4Liq4Li44LiX4LiY4Li0OiAlZCDguJrguLLguJdcbiIsIHRvdGFsX3ByaWNlKTsgLy8g4LmB4Liq4LiU4LiH4Lij4Liy4LiE4Liy4Lij4Lin4LihCiAgICBwcmludF9saW5lKCk7IC8vIOC4nuC4tOC4oeC4nuC5jOC5gOC4quC5ieC4meC5geC4muC5iOC4hwogICAgcHJpbnRmKCLguILguK3guJrguITguLjguJPguJfguLXguYjguYPguIrguYnguJrguKPguLTguIHguLLguKMhXG4iKTsgLy8g4LmB4Liq4LiU4LiH4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4LiC4Lit4Lia4LiE4Li44LiTCn0KCi8vIOC4n+C4seC4h+C4geC5jOC4iuC4seC4meC4q+C4peC4seC4geC4guC4reC4h+C5guC4m+C4o+C5geC4geC4o+C4oQppbnQgbWFpbigpIHsKICAgIC8vIOC4m+C4o+C4sOC4geC4suC4qOC4leC4seC4p+C5geC4m+C4o+C5gOC4nuC4t+C5iOC4reC5gOC4geC5h+C4muC4guC5ieC4reC4oeC4ueC4peC4geC4suC4o+C5gOC4peC4t+C4reC4geC4guC4reC4h+C4nOC4ueC5ieC5g+C4iuC5iQogICAgaW50IG1lbnVfY2hvaWNlLCBzaXplX2Nob2ljZSwgc3dlZXRuZXNzX2Nob2ljZSwgdG9wcGluZ19jaG9pY2UsIHRvcHBpbmdfY291bnQgPSAwOwogICAgaW50IHRvdGFsX3ByaWNlID0gMDsgLy8g4Lib4Lij4Liw4LiB4Liy4Lio4LiV4Lix4Lin4LmB4Lib4Lij4Liq4Liz4Lir4Lij4Lix4Lia4LmA4LiB4LmH4Lia4Lij4Liy4LiE4Liy4Lij4Lin4LihCiAgICBjaGFyIGFkZF9tb3JlOyAvLyDguJvguKPguLDguIHguLLguKjguJXguLHguKfguYHguJvguKPguKrguLPguKvguKPguLHguJrguYDguIHguYfguJrguITguLPguJXguK3guJrguKfguYjguLLguJXguYnguK3guIfguIHguLLguKPguYDguJ7guLTguYjguKHguJfguYfguK3guJvguJvguLTguYnguIfguKvguKPguLfguK3guYTguKHguYgKCiAgICAvLyDguYHguKrguJTguIfguYDguKHguJnguLnguYDguITguKPguLfguYjguK3guIfguJTguLfguYjguKEKICAgIHByaW50X21lbnUoKTsKICAgIC8vIOC4o+C4seC4muC4hOC5iOC4suC5gOC4oeC4meC4ueC4iOC4suC4geC4nOC4ueC5ieC5g+C4iuC5iQogICAgcHJpbnRmKCLguYDguKXguLfguK3guIHguYDguKHguJnguLnguYDguITguKPguLfguYjguK3guIfguJTguLfguYjguKEgKDEtMTApOiAiKTsKICAgIC8vIOC4leC4o+C4p+C4iOC4quC4reC4muC4geC4suC4o+C4m+C5ieC4reC4meC4guC5ieC4reC4oeC4ueC4peC4p+C5iOC4suC5gOC4m+C5h+C4meC4leC4seC4p+C5gOC4peC4guC5geC4peC4sOC5g+C4meC4iuC5iOC4p+C4h+C4l+C4teC5iOC4luC4ueC4geC4leC5ieC4reC4hyAoMS0xMCkKICAgIHdoaWxlIChzY2FuZigiJWQiLCAmbWVudV9jaG9pY2UpICE9IDEgfHwgbWVudV9jaG9pY2UgPCAxIHx8IG1lbnVfY2hvaWNlID4gMTApIHsKICAgICAgICB3aGlsZSAoZ2V0Y2hhcigpICE9ICdcbicpOyAvLyDguYDguITguKXguLXguKLguKPguYwgYnVmZmVyCiAgICAgICAgcHJpbnRmKCLguIHguKPguLjguJPguLLguYDguKXguLfguK3guIHguYDguKHguJnguLnguIjguLLguIEgMSDguJbguLbguIcgMTAg4LmA4LiX4LmI4Liy4LiZ4Lix4LmJ4LiZOiAiKTsKICAgIH0KICAgIG1lbnVfY2hvaWNlLS07IC8vIOC4peC4lOC4hOC5iOC4suC4peC4hyAxIOC5gOC4nuC4t+C5iOC4reC5g+C4q+C5ieC4leC4o+C4h+C4geC4seC4miBpbmRleCDguYPguJnguK3guLLguKPguYzguYDguKPguKLguYwKICAgIHRvdGFsX3ByaWNlICs9IG1lbnVfcHJpY2VzW21lbnVfY2hvaWNlXTsgLy8g4LmA4Lie4Li04LmI4Lih4Lij4Liy4LiE4Liy4LmA4Lih4LiZ4Li54Lil4LiH4LmD4LiZ4Lij4Liy4LiE4Liy4Lij4Lin4LihCgogICAgLy8g4LmB4Liq4LiU4LiH4LiC4LiZ4Liy4LiU4LmB4LiB4LmJ4LinCiAgICBwcmludF9zaXplcygpOwogICAgLy8g4Lij4Lix4Lia4LiE4LmI4Liy4LiC4LiZ4Liy4LiU4LmB4LiB4LmJ4Lin4LiI4Liy4LiB4Lic4Li54LmJ4LmD4LiK4LmJCiAgICBwcmludGYoIuC5gOC4peC4t+C4reC4geC4guC4meC4suC4lOC5geC4geC5ieC4pyAoMS0zKTogIik7CiAgICAvLyDguJXguKPguKfguIjguKrguK3guJrguIHguLLguKPguJvguYnguK3guJnguILguYnguK3guKHguLnguKXguKfguYjguLLguYDguJvguYfguJnguJXguLHguKfguYDguKXguILguYHguKXguLDguYPguJnguIrguYjguKfguIfguJfguLXguYjguJbguLnguIHguJXguYnguK3guIcgKDEtMykKICAgIHdoaWxlIChzY2FuZigiJWQiLCAmc2l6ZV9jaG9pY2UpICE9IDEgfHwgc2l6ZV9jaG9pY2UgPCAxIHx8IHNpemVfY2hvaWNlID4gMykgewogICAgICAgIHdoaWxlIChnZXRjaGFyKCkgIT0gJ1xuJyk7IC8vIOC5gOC4hOC4peC4teC4ouC4o+C5jCBidWZmZXIKICAgICAgICBwcmludGYoIuC4geC4o+C4uOC4k+C4suC5gOC4peC4t+C4reC4geC4guC4meC4suC4lOC5geC4geC5ieC4p+C4iOC4suC4gSAxIOC4luC4tuC4hyAzIOC5gOC4l+C5iOC4suC4meC4seC5ieC4mTogIik7CiAgICB9CiAgICBzaXplX2Nob2ljZS0tOyAvLyDguKXguJTguITguYjguLLguKXguIcgMSDguYDguJ7guLfguYjguK3guYPguKvguYnguJXguKPguIfguIHguLHguJogaW5kZXgg4LmD4LiZ4Lit4Liy4Lij4LmM4LmA4Lij4Lii4LmMCiAgICB0b3RhbF9wcmljZSArPSBzaXplX3ByaWNlc1tzaXplX2Nob2ljZV07IC8vIOC5gOC4nuC4tOC5iOC4oeC4o+C4suC4hOC4suC4guC4meC4suC4lOC5geC4geC5ieC4p+C4peC4h+C5g+C4meC4o+C4suC4hOC4suC4o+C4p+C4oQoKICAgIC8vIOC5geC4quC4lOC4h+C4o+C4sOC4lOC4seC4muC4hOC4p+C4suC4oeC4q+C4p+C4suC4mQogICAgcHJpbnRfc3dlZXRuZXNzX2xldmVscygpOwogICAgLy8g4Lij4Lix4Lia4LiE4LmI4Liy4Lij4Liw4LiU4Lix4Lia4LiE4Lin4Liy4Lih4Lir4Lin4Liy4LiZ4LiI4Liy4LiB4Lic4Li54LmJ4LmD4LiK4LmJCiAgICBwcmludGYoIuC5gOC4peC4t+C4reC4geC4o+C4sOC4lOC4seC4muC4hOC4p+C4suC4oeC4q+C4p+C4suC4mSAoMS01KTogIik7CiAgICAvLyDguJXguKPguKfguIjguKrguK3guJrguIHguLLguKPguJvguYnguK3guJnguILguYnguK3guKHguLnguKXguKfguYjguLLguYDguJvguYfguJnguJXguLHguKfguYDguKXguILguYHguKXguLDguYPguJnguIrguYjguKfguIfguJfguLXguYjguJbguLnguIHguJXguYnguK3guIcgKDEtNSkKICAgIHdoaWxlIChzY2FuZigiJWQiLCAmc3dlZXRuZXNzX2Nob2ljZSkgIT0gMSB8fCBzd2VldG5lc3NfY2hvaWNlIDwgMSB8fCBzd2VldG5lc3NfY2hvaWNlID4gNSkgewogICAgICAgIHdoaWxlIChnZXRjaGFyKCkgIT0gJ1xuJyk7IC8vIOC5gOC4hOC4peC4teC4ouC4o+C5jCBidWZmZXIKICAgICAgICBwcmludGYoIuC4geC4o+C4uOC4k+C4suC5gOC4peC4t+C4reC4geC4o+C4sOC4lOC4seC4muC4hOC4p+C4suC4oeC4q+C4p+C4suC4meC4iOC4suC4gSAxIOC4luC4tuC4hyA1IOC5gOC4l+C5iOC4suC4meC4seC5ieC4mTogIik7CiAgICB9CiAgICBzd2VldG5lc3NfY2hvaWNlLS07IC8vIOC4peC4lOC4hOC5iOC4suC4peC4hyAxIOC5gOC4nuC4t+C5iOC4reC5g+C4q+C5ieC4leC4o+C4h+C4geC4seC4miBpbmRleCDguYPguJnguK3guLLguKPguYzguYDguKPguKLguYwKCiAgICAvLyDguKfguJnguKXguLnguJvguKrguLPguKvguKPguLHguJrguIHguLLguKPguYDguKXguLfguK3guIHguJfguYfguK3guJvguJvguLTguYnguIcKICAgIGRvIHsKICAgICAgICAvLyDguYHguKrguJTguIfguJfguYfguK3guJvguJvguLTguYnguIfguJfguLXguYjguYDguKXguLfguK3guIHguYTguJTguYkKICAgICAgICBwcmludF90b3BwaW5ncygpOwogICAgICAgIC8vIOC4o+C4seC4muC4hOC5iOC4suC4l+C5h+C4reC4m+C4m+C4tOC5ieC4h+C4iOC4suC4geC4nOC4ueC5ieC5g+C4iuC5iQogICAgICAgIHByaW50Zigi4LmA4Lil4Li34Lit4LiB4LiX4LmH4Lit4Lib4Lib4Li04LmJ4LiHICgxLTUpIOC4q+C4o+C4t+C4rSAwIOC5gOC4nuC4t+C5iOC4reC4guC5ieC4suC4oTogIik7CiAgICAgICAgLy8g4LiV4Lij4Lin4LiI4Liq4Lit4Lia4LiB4Liy4Lij4Lib4LmJ4Lit4LiZ4LiC4LmJ4Lit4Lih4Li54Lil4Lin4LmI4Liy4LmA4Lib4LmH4LiZ4LiV4Lix4Lin4LmA4Lil4LiC4LmB4Lil4Liw4LmD4LiZ4LiK4LmI4Lin4LiH4LiX4Li14LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHICgwLTUpCiAgICAgICAgd2hpbGUgKHNjYW5mKCIlZCIsICZ0b3BwaW5nX2Nob2ljZSkgIT0gMSB8fCB0b3BwaW5nX2Nob2ljZSA8IDAgfHwgdG9wcGluZ19jaG9pY2UgPiA1KSB7CiAgICAgICAgICAgIHdoaWxlIChnZXRjaGFyKCkgIT0gJ1xuJyk7IC8vIOC5gOC4hOC4peC4teC4ouC4o+C5jCBidWZmZXIKICAgICAgICAgICAgcHJpbnRmKCLguIHguKPguLjguJPguLLguYDguKXguLfguK3guIHguJfguYfguK3guJvguJvguLTguYnguIfguIjguLLguIEgMCDguJbguLbguIcgNSDguYDguJfguYjguLLguJnguLHguYnguJk6ICIpOwogICAgICAgIH0KICAgICAgICAvLyDguJbguYnguLLguJzguLnguYnguYPguIrguYnguYDguKXguLfguK3guIHguJfguYfguK3guJvguJvguLTguYnguIcKICAgICAgICBpZiAodG9wcGluZ19jaG9pY2UgPiAwICYmIHRvcHBpbmdfY2hvaWNlIDw9IFRPUFBJTkdfSVRFTVMpIHsKICAgICAgICAgICAgdG90YWxfcHJpY2UgKz0gdG9wcGluZ19wcmljZXNbdG9wcGluZ19jaG9pY2UgLSAxXTsgLy8g4LmA4Lie4Li04LmI4Lih4Lij4Liy4LiE4Liy4LiX4LmH4Lit4Lib4Lib4Li04LmJ4LiH4Lil4LiH4LmD4LiZ4Lij4Liy4LiE4Liy4Lij4Lin4LihCiAgICAgICAgICAgIHRvcHBpbmdfY291bnQrKzsgLy8g4LmA4Lie4Li04LmI4Lih4LiI4Liz4LiZ4Lin4LiZ4LiX4LmH4Lit4Lib4Lib4Li04LmJ4LiHCiAgICAgICAgICAgIHByaW50Zigi4LiV4LmJ4Lit4LiH4LiB4Liy4Lij4LmA4Lie4Li04LmI4Lih4Lit4Li14LiB4Lir4Lij4Li34Lit4LmE4Lih4LmIPyAoeS9uKTogIik7CiAgICAgICAgICAgIHNjYW5mKCIgJWMiLCAmYWRkX21vcmUpOyAvLyDguKPguLHguJrguITguLPguJXguK3guJrguKfguYjguLLguJXguYnguK3guIfguIHguLLguKPguYDguJ7guLTguYjguKHguK3guLXguIHguKvguKPguLfguK3guYTguKHguYgKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBhZGRfbW9yZSA9ICduJzsgLy8g4Lir4Liy4LiB4LmA4Lil4Li34Lit4LiBIDAg4LmD4Lir4LmJ4Lir4Lii4Li44LiU4LmA4Lie4Li04LmI4Lih4LiX4LmH4Lit4Lib4Lib4Li04LmJ4LiHCiAgICAgICAgfQogICAgfSB3aGlsZSAoYWRkX21vcmUgPT0gJ3knKTsgLy8g4Lin4LiZ4Lil4Li54Lib4LiW4LmJ4Liy4Lic4Li54LmJ4LmD4LiK4LmJ4LiV4LmJ4Lit4LiH4LiB4Liy4Lij4LmA4Lie4Li04LmI4Lih4LiX4LmH4Lit4Lib4Lib4Li04LmJ4LiH4LiV4LmI4LitCgogICAgLy8g4LmB4Liq4LiU4LiH4LmD4Lia4LmA4Liq4Lij4LmH4LiI4Liq4Lij4Li44LibCiAgICBwcmludF9yZWNlaXB0KG1lbnVfY2hvaWNlLCBzaXplX2Nob2ljZSwgc3dlZXRuZXNzX2Nob2ljZSwgdG9wcGluZ19jb3VudCwgdG90YWxfcHJpY2UpOwogICAgcmV0dXJuIDA7IC8vIOC4quC5iOC4h+C4hOC5iOC4suC4nOC4peC4peC4seC4nuC4mOC5jOC4geC4peC4seC4muC4iOC4suC4geC4n+C4seC4h+C4geC5jOC4iuC4seC4mSBtYWluCn0K
#include <stdio.h> // นำเข้าไลบรารีมาตรฐานสำหรับฟังก์ชัน input/output เช่น printf() และ scanf()
#define MENU_ITEMS 10 // กำหนดค่าคงที่ MENU_ITEMS เป็น 10 แทนจำนวนเมนูเครื่องดื่ม
#define TOPPING_ITEMS 5 // กำหนดค่าคงที่ TOPPING_ITEMS เป็น 5 แทนจำนวนท็อปปิ้ง
#define SIZE_OPTIONS 3 // กำหนดค่าคงที่ SIZE_OPTIONS เป็น 3 แทนจำนวนขนาดแก้ว
// อาร์เรย์ที่เก็บชื่อเมนูเครื่องดื่ม
const char *menu[MENU_ITEMS] = {
"ชานม", "ชาเขียว", "ชาไทย", "โกโก้", "มัทฉะ",
"เผือก", "นมสด", "กาแฟ", "นมชมพู", "น้ำผึ้งมะนาว"
};
// อาร์เรย์ที่เก็บราคาของเมนูเครื่องดื่มแต่ละรายการ
const int menu_prices[MENU_ITEMS] = {30, 30, 35, 40, 45, 35, 30, 40, 30, 35};
// อาร์เรย์ที่เก็บชื่อท็อปปิ้ง
const char *toppings[TOPPING_ITEMS] = {"ไข่มุก", "วุ้นมะพร้าว", "เฉาก๊วย", "พุดดิ้ง", "ถั่วแดง"};
// อาร์เรย์ที่เก็บราคาของท็อปปิ้งแต่ละรายการ
const int topping_prices[TOPPING_ITEMS] = {5, 5, 5, 10, 10};
// อาร์เรย์ที่เก็บชื่อขนาดแก้ว
const char *sizes[SIZE_OPTIONS] = {"เล็ก", "กลาง", "ใหญ่"};
// อาร์เรย์ที่เก็บราคาของแต่ละขนาดแก้ว
const int size_prices[SIZE_OPTIONS] = {0, 5, 10};
// อาร์เรย์ที่เก็บชื่อระดับความหวาน
const char *sweetness_levels[] = {"ไม่หวาน", "25%", "50%", "75%", "100%"};
// ฟังก์ชันสำหรับพิมพ์เส้นแบ่ง
void print_line() {
printf("------------------------------------------\n"); // พิมพ์เส้นแบ่ง
}
// ฟังก์ชันสำหรับแสดงเมนูเครื่องดื่ม
void print_menu() {
print_line(); // พิมพ์เส้นแบ่ง
printf("--- เมนูเครื่องดื่ม ---\n"); // แสดงหัวข้อเมนู
for (int i = 0; i < MENU_ITEMS; i++) { // วนลูปเพื่อแสดงเมนูแต่ละรายการ
printf("%d. %s (%d บาท)\n", i + 1, menu[i], menu_prices[i]); // แสดงหมายเลข, ชื่อเมนู, และราคา
}
print_line(); // พิมพ์เส้นแบ่ง
}
// ฟังก์ชันสำหรับแสดงขนาดแก้ว
void print_sizes() {
print_line(); // พิมพ์เส้นแบ่ง
printf("--- ขนาดแก้ว ---\n"); // แสดงหัวข้อขนาดแก้ว
for (int i = 0; i < SIZE_OPTIONS; i++) { // วนลูปเพื่อแสดงขนาดแก้วแต่ละรายการ
printf("%d. %s (+%d บาท)\n", i + 1, sizes[i], size_prices[i]); // แสดงหมายเลข, ชื่อขนาด, และราคาเพิ่ม
}
print_line(); // พิมพ์เส้นแบ่ง
}
// ฟังก์ชันสำหรับแสดงระดับความหวาน
void print_sweetness_levels() {
print_line(); // พิมพ์เส้นแบ่ง
printf("--- ระดับความหวาน ---\n"); // แสดงหัวข้อระดับความหวาน
for (int i = 0; i < 5; i++) { // วนลูปเพื่อแสดงระดับความหวานแต่ละรายการ
printf("%d. %s\n", i + 1, sweetness_levels[i]); // แสดงหมายเลขและระดับความหวาน
}
print_line(); // พิมพ์เส้นแบ่ง
}
// ฟังก์ชันสำหรับแสดงท็อปปิ้ง
void print_toppings() {
print_line(); // พิมพ์เส้นแบ่ง
printf("--- ท็อปปิ้ง ---\n"); // แสดงหัวข้อท็อปปิ้ง
for (int i = 0; i < TOPPING_ITEMS; i++) { // วนลูปเพื่อแสดงท็อปปิ้งแต่ละรายการ
printf("%d. %s (+%d บาท)\n", i + 1, toppings[i], topping_prices[i]); // แสดงหมายเลข, ชื่อท็อปปิ้ง, และราคาเพิ่ม
}
print_line(); // พิมพ์เส้นแบ่ง
}
// ฟังก์ชันสำหรับพิมพ์ใบเสร็จ
void print_receipt(int menu_choice, int size_choice, int sweetness_choice, int topping_count, int total_price) {
print_line(); // พิมพ์เส้นแบ่ง
printf("\n--- สรุปรายการสั่งซื้อ ---\n"); // แสดงหัวข้อใบเสร็จ
printf("เครื่องดื่ม: %s\n", menu[menu_choice]); // แสดงชื่อเครื่องดื่มที่เลือก
printf("ขนาด: %s\n", sizes[size_choice]); // แสดงขนาดแก้วที่เลือก
printf("ระดับความหวาน: %s\n", sweetness_levels[sweetness_choice]); // แสดงระดับความหวานที่เลือก
printf("ท็อปปิ้ง %d รายการ\n", topping_count); // แสดงจำนวนท็อปปิ้งที่เลือก
printf("ราคาสุทธิ: %d บาท\n", total_price); // แสดงราคารวม
print_line(); // พิมพ์เส้นแบ่ง
printf("ขอบคุณที่ใช้บริการ!\n"); // แสดงข้อความขอบคุณ
}
// ฟังก์ชันหลักของโปรแกรม
int main() {
// ประกาศตัวแปรเพื่อเก็บข้อมูลการเลือกของผู้ใช้
int menu_choice, size_choice, sweetness_choice, topping_choice, topping_count = 0;
int total_price = 0; // ประกาศตัวแปรสำหรับเก็บราคารวม
char add_more; // ประกาศตัวแปรสำหรับเก็บคำตอบว่าต้องการเพิ่มท็อปปิ้งหรือไม่
// แสดงเมนูเครื่องดื่ม
print_menu();
// รับค่าเมนูจากผู้ใช้
printf("เลือกเมนูเครื่องดื่ม (1-10): ");
// ตรวจสอบการป้อนข้อมูลว่าเป็นตัวเลขและในช่วงที่ถูกต้อง (1-10)
while (scanf("%d", &menu_choice) != 1 || menu_choice < 1 || menu_choice > 10) {
while (getchar() != '\n'); // เคลียร์ buffer
printf("กรุณาเลือกเมนูจาก 1 ถึง 10 เท่านั้น: ");
}
menu_choice--; // ลดค่าลง 1 เพื่อให้ตรงกับ index ในอาร์เรย์
total_price += menu_prices[menu_choice]; // เพิ่มราคาเมนูลงในราคารวม
// แสดงขนาดแก้ว
print_sizes();
// รับค่าขนาดแก้วจากผู้ใช้
printf("เลือกขนาดแก้ว (1-3): ");
// ตรวจสอบการป้อนข้อมูลว่าเป็นตัวเลขและในช่วงที่ถูกต้อง (1-3)
while (scanf("%d", &size_choice) != 1 || size_choice < 1 || size_choice > 3) {
while (getchar() != '\n'); // เคลียร์ buffer
printf("กรุณาเลือกขนาดแก้วจาก 1 ถึง 3 เท่านั้น: ");
}
size_choice--; // ลดค่าลง 1 เพื่อให้ตรงกับ index ในอาร์เรย์
total_price += size_prices[size_choice]; // เพิ่มราคาขนาดแก้วลงในราคารวม
// แสดงระดับความหวาน
print_sweetness_levels();
// รับค่าระดับความหวานจากผู้ใช้
printf("เลือกระดับความหวาน (1-5): ");
// ตรวจสอบการป้อนข้อมูลว่าเป็นตัวเลขและในช่วงที่ถูกต้อง (1-5)
while (scanf("%d", &sweetness_choice) != 1 || sweetness_choice < 1 || sweetness_choice > 5) {
while (getchar() != '\n'); // เคลียร์ buffer
printf("กรุณาเลือกระดับความหวานจาก 1 ถึง 5 เท่านั้น: ");
}
sweetness_choice--; // ลดค่าลง 1 เพื่อให้ตรงกับ index ในอาร์เรย์
// วนลูปสำหรับการเลือกท็อปปิ้ง
do {
// แสดงท็อปปิ้งที่เลือกได้
print_toppings();
// รับค่าท็อปปิ้งจากผู้ใช้
printf("เลือกท็อปปิ้ง (1-5) หรือ 0 เพื่อข้าม: ");
// ตรวจสอบการป้อนข้อมูลว่าเป็นตัวเลขและในช่วงที่ถูกต้อง (0-5)
while (scanf("%d", &topping_choice) != 1 || topping_choice < 0 || topping_choice > 5) {
while (getchar() != '\n'); // เคลียร์ buffer
printf("กรุณาเลือกท็อปปิ้งจาก 0 ถึง 5 เท่านั้น: ");
}
// ถ้าผู้ใช้เลือกท็อปปิ้ง
if (topping_choice > 0 && topping_choice <= TOPPING_ITEMS) {
total_price += topping_prices[topping_choice - 1]; // เพิ่มราคาท็อปปิ้งลงในราคารวม
topping_count++; // เพิ่มจำนวนท็อปปิ้ง
printf("ต้องการเพิ่มอีกหรือไม่? (y/n): ");
scanf(" %c", &add_more); // รับคำตอบว่าต้องการเพิ่มอีกหรือไม่
} else {
add_more = 'n'; // หากเลือก 0 ให้หยุดเพิ่มท็อปปิ้ง
}
} while (add_more == 'y'); // วนลูปถ้าผู้ใช้ต้องการเพิ่มท็อปปิ้งต่อ
// แสดงใบเสร็จสรุป
print_receipt(menu_choice, size_choice, sweetness_choice, topping_count, total_price);
return 0; // ส่งค่าผลลัพธ์กลับจากฟังก์ชัน main
}