310 likes | 462 Views
259201 Computer Programming for Engineers. Engineering Problem#1. ปัญหาด้านการจัดการสินค้าคงคลัง (Inventory Problem). การผลิต (Production) คือ การแปลงสภาพของวัตถุดิบ ด้วยกระบวนการต่างๆ เพื่อให้ได้มาซึ่งสินค้าหรือผลิตภัณฑ์ที่ตรงตามความต้องการของลูกค้า โดยอาศัยทรัพยากรต่างๆในระบบการผลิต
E N D
259201Computer Programming for Engineers Engineering Problem#1
ปัญหาด้านการจัดการสินค้าคงคลัง (Inventory Problem) • การผลิต (Production) คือ การแปลงสภาพของวัตถุดิบ ด้วยกระบวนการต่างๆ เพื่อให้ได้มาซึ่งสินค้าหรือผลิตภัณฑ์ที่ตรงตามความต้องการของลูกค้า โดยอาศัยทรัพยากรต่างๆในระบบการผลิต • วัตถุดิบ จึงเป็นปัจจัยสำคัญของระบบการผลิตในภาคอุตสาหกรรม และเป็นส่วนหนึ่งในการกำหนดราคาของสินค้า • ดังนั้น การจัดการเพื่อลดต้นทุนของการจัดการวัตถุดิบ จึงเป็นอีกทางเลือกหนึ่งในการเพิ่มโอกาสในการทำกำไรให้แก่องค์กร
ต้นทุนในการจัดการสินค้าคงคลังต้นทุนในการจัดการสินค้าคงคลัง • เราสามารถแบ่งต้นทุนในการจัดการสินค้าคงคลัง ออกเป็น 3 ประเภทหลักๆ ได้แก่ • ต้นทุนราคาของวัตถุดิบ (บาท/ชิ้น) • ต้นทุนในการสั่งซื้อแต่ละครั้ง (บาท/ครั้ง) เช่น ต้นทุนการขนส่ง เป็นต้น • ต้นทุนในการเก็บรักษาวัตถุดิบ (บาท/ชิ้น/ปี) เช่น ต้นทุนค่าเช่าพื้นที่เก็บสินค้า, เงินเดือนของพนักงานที่ดูแลคลังสินค้า เป็นต้น หน่วยของต้นทุนในการเก็บรักษาวัตถุดิบ อาจเป็น บาท/ชิ้น/เดือน หรือ บาท/ชิ้น/วัน ก็ได้ขึ้นอยู่กับความเหมาะสมของการหมุนเวียนวัตถุดิบในคลัง Material Cost Ordering Cost Holding Cost
ต้นทุนในการจัดการสินค้าคงคลังต้นทุนในการจัดการสินค้าคงคลัง • ร้านขายก๋วยเตี๋ยว วิเคราะห์ต้นทุนที่เกิดขึ้นของลูกชิ้นหมู พบว่า ในการซื้อและเก็บรักษาลูกชิ้นหมูของที่ร้าน มีต้นทุนต่างๆ ดังนี้ • ต้นทุนค่าลูกชิ้นหมู กิโลกรัมละ 140 บาท • ในการซื้อลูกชิ้นหมูแต่ละครั้ง เสียค่าน้ำมันรถ 15 บาท/ครั้ง • ตู้เย็นที่ใช้ในการเก็บลูกชิ้น กินไฟเฉลี่ยวันละ 25 บาท และสามารถเก็บลูกชิ้นได้สูงสุด 100 กิโลกรัม คิดเป็นค่าไฟ = 25/100 = 0.25 บาท/กก./วัน • เจ้าของร้านวิเคราะห์ต้นทุนลูกชิ้นหมู ได้ดังนี้ • Material Cost = ค่าลูกชิ้นหมู = 140 บาท/กิโลกรัม • Ordering Cost = ค่าน้ำมันในการซื้อลูกชิ้นแต่ละครั้ง = 15 บาท / ครั้ง • Holding Cost = ค่าไฟตู้เย็นที่ใช้เก็บลูกชิ้น = 0.25 บาท / กก. / วัน
ต้นทุนในการจัดการสินค้าคงคลังต้นทุนในการจัดการสินค้าคงคลัง • เจ้าของร้านพบว่า โดยเฉลี่ยแล้วใน 1 เดือน จะต้องใช้ลูกชิ้นหมูในการทำก๋วยเตี๋ยว 60 กิโลกรัม เจ้าของร้านจะซื้อลูกชิ้นหมูครั้งละกี่กิโลกรัม? และควรซื้อเดือนละกี่ครั้ง? จึงจะทำให้ต้นทุนต่ำที่สุด • หากกำหนดให้ จำนวนลูกชิ้นหมูที่อยู่ในตู้เย็นโดยเฉลี่ยแล้ว มีจำนวนเท่ากับ ครึ่งหนึ่งของการสั่งซื้อแต่ละครั้ง • ซื้อครั้งเดียว ครั้งละ 60 กิโลกรัม? • ซื้อ 2 ครั้ง ครั้งละ 30 กิโลกรัม ? • ซื้อ 3 ครั้ง ครั้งละ 20 กิโลกรัม? • ซื้อ 4 ครั้ง ครั้งละ 15 กิโลกรัม? การสั่งซื้อแบบไหนที่จะทำให้ต้นทุนต่ำที่สุด??? ......
ต้นทุนในการจัดการสินค้าคงคลังต้นทุนในการจัดการสินค้าคงคลัง • เจ้าของร้านจึงได้ ใช้โปรแกรมชื่อ meatball.c ในการคำนวณค่าใช้จ่ายที่เกิดขึ้น ดังนี้ #include "stdio.h" void main(){ float N,Q,M,O,H,MC,OC,HC,TC; printf("Number of Ordering (order/month): "); scanf("%f", &N); printf("Quantity per order (unit/order): "); scanf("%f", &Q); printf("Input material cost (baht/unit): "); scanf("%f", &M); printf("Input ordering cost (baht/order): "); scanf("%f", &O); printf("Input holding cost (baht/unit/day): "); scanf("%f", &H); MC = Q*N*M; OC = N*O; HC = Q/2*H*30; TC = MC+OC+HC; printf("Total Cost is: %.0f baht/month \n",TC); }
ต้นทุนในการจัดการสินค้าคงคลังต้นทุนในการจัดการสินค้าคงคลัง • เจ้าของร้านทำการ Trial and error ใส่จำนวนครั้ง และปริมาณการซื้อแต่ละครั้ง ได้ผลลัพธ์ ดังนี้ Minimum cost
ต้นทุนในการจัดการสินค้าคงคลังต้นทุนในการจัดการสินค้าคงคลัง • จะมีวิธีใดบ้าง ที่เจ้าของร้าน ไม่ต้องเสียเวลาทดลองสุ่มค่าตัวเลขใส่ลงไปเอง? • โปรแกรมสามารถหาคำตอบที่เป็นต้นทุนที่ต่ำที่สุด ได้อย่างไร??? • สังเกตุจำนวนการสั่งซื้อ และปริมาณการสั่งซื้อต่อครั้ง ที่สัมพันธ์กับต้นทุน
ต้นทุนในการจัดการสินค้าคงคลังต้นทุนในการจัดการสินค้าคงคลัง จุดที่ต้นทุนต่ำที่สุดจากสถานการณ์ทั้งหมดที่ทดสอบ หมายเหตุ: เนื่องจากต้นทุนค่า วัตถุดิบ มีค่าเท่ากันหมดในทุกกรณี จึงไม่ได้นำมาพิจารณาในการเขียนกราฟ
ต้นทุนในการจัดการสินค้าคงคลังต้นทุนในการจัดการสินค้าคงคลัง เจ้าของร้าน จึงทดลองเปลี่ยนปริมาณการสั่งซื้อต่อครั้งไปเรื่อยๆ ตั้งแต่ 1 kg – 60 kg และเขียนกราฟ จุดที่ต้นทุนต่ำที่สุดจากสถานการณ์ทั้งหมดที่ทดสอบ
ต้นทุนในการจัดการสินค้าคงคลังต้นทุนในการจัดการสินค้าคงคลัง • เจ้าของร้านได้พัฒนาโปรแกรม จากโปรแกรมเดิมที่มีอยู่ โดยให้โปรแกรมเพิ่มจำนวนการสั่งซื้อลูกชิ้นหมูทีละ 1 kg เพื่อคำนวณหาต้นทุนที่เกิดขึ้นทั้งหมด แล้วเลือกปริมาณการสั่งซื้อที่ทำให้ต้นทุนต่ำที่สุด • เจ้าของร้านก๋วยเตี๋ยว ควรออกแบบให้โปรแกรมทำงานอย่างไรบ้าง??? • เมื่อต้องการผลลัพธ์ของโปรแกรม ดังนี้
ต้นทุนในการจัดการสินค้าคงคลังต้นทุนในการจัดการสินค้าคงคลัง • OutputQ = ปริมาณในการซื้อลูกชิ้นต่อครั้ง (kg/order)N = จำนวนครั้งในการซื้อลูกชิ้นต่อเดือน (order/month)TC = ต้นทุนรวมในการจัดซื้อจัดเก็บลูกชิ้น (baht/month) • InputD = ปริมาณลูกชิ้นที่ต้องการใช้ตลอดทั้งเดือน = 60 kg/monthM = ต้นทุนลูกชิ้นต่อกิโลกรัม = 140 baht/kgO = ต้นทุนในการซื้อลูกชิ้นต่อครั้ง = 15 baht/orderH = ต้นทุนในการจัดเก็บลูกชิ้น (โดยเฉลี่ยมีลูกชิ้นอยู่ในตู้เย็น Q/2) = 0.25 baht.kg/day หรือ = 0.25baht/kg/day * 30 day/month = 7.5 baht/month
ต้นทุนในการจัดการสินค้าคงคลังต้นทุนในการจัดการสินค้าคงคลัง วิธีที่ 1: • ให้โปรแกรมคำนวณต้นทุนกรณีที่สั่งซื้อลูกชิ้นหมู ตั้งแต่ 1 kg – 60 kg และเก็บค่าต้นทุน ปริมาณสั่งซื้อ และจำนวนการสั่งซื้อ ที่ต่ำที่สุดไว้ • สรุปปริมาณสั่งซื้อ จำนวนครั้งในการสั่งซื้อ และต้นทุนที่ต่ำที่สุด
แนวความคิดของวิธีที่ 1 Annual Cost หาต้นทุนที่เกิดขึ้นในทุกๆ จุด แล้วเปรียบเทียบว่าเป็นค่าต่ำสุดหรือไม่ minTC Total Cost Curve TC(1) TC(2) Holding Cost Curve TC(3) ...... ...... ...... Order (Setup) Cost Curve Order Quantity Optimal Order Quantity (Q*)
แนวความคิดของวิธีที่ 1 #include "stdio.h“ // meatball2.c void main(){ floatN,Q,M,O,H,MC,OC,HC,TC,minTC=100000,D,Qo,No,TCo; inti; printf("Input demand of material (unit/month): "); scanf("%f", &D); printf("Input material cost (baht/unit): "); scanf("%f", &M); printf("Input ordering cost (baht/order): "); scanf("%f", &O); printf("Input holding cost (baht/unit/day): "); scanf("%f", &H); for ( i=1 ; i<=D ; i++ ){ Q = i; N = D/Q; MC = Q*N*M; OC = N*O; HC = Q/2.*H*30.; TC = MC+OC+HC; if (TC < minTC){ minTC = TC; Qo = Q; //Qoคือ ปริมาณการสั่งซื้อที่ทำให้เกิดต้นทุนต่ำที่สุด No = N; //No คือ จำนวนครั้งในการซื้อของที่ทำให้เกิดต้นทุนต่ำที่สุด TCo = TC;}//TCoคือ ต้นทุนที่ต่ำที่สุดที่เกิดขึ้น } printf("The best quantity is: %.2f kg/order \n",Qo); printf("Number of order is: %.2f order/month \n",No); printf("Total Cost is: %.0f baht/month \n",TCo);}
ต้นทุนในการจัดการสินค้าคงคลังต้นทุนในการจัดการสินค้าคงคลัง วิธีที่ 2: • ให้โปรแกรมคำนวณต้นทุนกรณีที่สั่งซื้อลูกชิ้นหมู เริ่มจาก 1 kg • โปรแกรมคำนวณต้นทุนที่เกิดขึ้น จากปริมาณการสั่งซื้อนั้นๆ • โปรแกรมทำการเปรียบเทียบ ว่าต้นทุนที่เกิดขึ้นต่ำกว่าปริมาณการสั่งซื้อก่อนหน้านั้นหรือไม่หากต้นทุนที่เกิดขึ้นต่ำกว่าปริมาณสั่งซื้อก่อนหน้า ให้รันโปรแกรมต่อไปหากต้นทุนที่เกิดขึ้นสูงกว่า ปริมาณการสั่งซื้อก่อนหน้านั้น แสดงว่าปริมาณการสั่งซื้อก่อนหน้านี้ เป็นปริมาณการสั่งซื้อที่ต่ำที่สุดแล้ว ให้โปรแกรมออกจากลูป • สรุปปริมาณการสั่งซื้อที่ต่ำที่สุด จำนวนครั้งในการสั่งซื้อ และต้นทุนที่ต่ำที่สุด
แนวความคิดของวิธีที่ 2 Annual Cost Total Cost เมื่อเทียบกับปริมาณการสั่งซื้อก่อนหน้า เริ่มมีค่ามากขึ้น แสดงว่า TC (i-1) มีค่าต่ำสุด Total Cost Curve TC(1) TC(i) TC(2) TC(i-1) TC(3) Holding Cost Curve ...... โปรแกรมออกจากลูป และไม่รันในส่วนนี้ต่อ Order (Setup) Cost Curve Order Quantity Optimal Order Quantity (Q*)
แนวความคิดของวิธีที่ 2 #include "stdio.h“ //meatball3.c void main(){ floatN,M,O,H,Q,MC,OC,HC,TC,TC_prev,D,Qo,No,TCo; inti; printf("Input demand of material (unit/month): "); scanf("%f", &D); printf("Input material cost (baht/unit): "); scanf("%f", &M); printf("Input ordering cost (baht/order): "); scanf("%f", &O); printf("Input holding cost (baht/unit/day): "); scanf("%f", &H); for ( i=1 ; i<=D ; i++ ){ Q = i; N = D/Q; MC = Q*N*M; OC = N*O; HC = Q/2.*H*30.; TC = MC+OC+HC; if (i>1 && TC > TC_prev){ Qo = i-1; //Qoคือ ปริมาณการสั่งซื้อที่ทำให้เกิดต้นทุนต่ำที่สุด No = D/(i-1); //No คือ จำนวนครั้งในการซื้อของที่ทำให้เกิดต้นทุนต่ำที่สุด TCo = TC_prev;//TCoคือ ต้นทุนที่ต่ำที่สุดที่เกิดขึ้น break;} TC_prev=TC; } printf("The best quantity is: %.2f kg/order \n",Qo); printf("Number of order is: %.2f order/month \n",No); printf("Total Cost is: %.0f baht/month \n",TCo);} ข้อดี ของวิธีที่ 2 คือ เมื่อเจอคำตอบแล้ว โปรแกรมจะออกจากลูปทันที ไม่จำเป็นต้องรันจนครบทุกรอบ
เปรียบเทียบผลลัพธ์จากวิธีคิดที่ 1 และ 2 วิธีที่ 1 • จากการเปรียบเทียบ พบว่า • การซื้อลูกชิ้นครั้ง 15 หรือ 16 kg ทำให้เกิดต้นทุนเท่ากัน คือ 8,516.25 บาท • นั่นแสดงว่า เจ้าของร้านจะเลือกซื้อครั้งละ 15 หรือ 16 kg ก็ไม่ต่างกัน • พิจารณาจำนวนครั้งในการสั่งซื้อ4 ครั้ง/เดือน = ซื้อทุกๆ 7.5 วัน3.75 ครั้ง/เดือน = ซื้อทุกๆ 8 วัน • ดังนั้น เจ้าของร้านจะเลือกทางเลือกใดก็ได้ ต้นทุนที่เกิดขึ้นเท่ากัน วิธีที่ 2
ตัวอย่างที่ 1: Inventory Problem • บริษัทผลิตเฟอร์นิเจอร์ ต้องการคำนวณหาปริมาณการสั่งซื้อ ในการสั่งซื้อวัสดุของการผลิตโคมไฟ ที่ทำให้เกิดต้นทุนในการสั่งซื้อ และการจัดเก็บวัสดุน้อยที่สุด ซึ่งค่าใช้จ่ายต่างๆ ของวัสดุในการผลิตโคมไฟ ได้แก่ • ราคาวัตถุดิบที่ใช้ทำโคมไฟ = 120 บาท/ชิ้น • ค่าใช้จ่ายในการสั่งซื้อ = 160 บาท/ครั้ง • ค่าใช้จ่ายในการเก็บรักษา = 40 บาท/ชิ้น/ปี • หากความต้องการของลูกค้าเท่ากับ 6,000 ชิ้น/ปี บริษัทควรสั่งซื้อปีละกี่ครั้ง ครั้งละกี่ชิ้น และทำให้เกิดต้นทุนเท่าใด
ตัวอย่างที่ 1: Inventory Problem • นักศึกษาสามารถแก้ไข/ดัดแปลง จากโปรแกรม meatball2.c หรือ meatball3.c • จะต้องมีการแก้ไขโปรแกรมที่บรรทัดใดบ้าง??? หากต้องการผลลัพธ์ ดังนี้
ตัวอย่างที่ 2: Advanced Inventory Problem • จากตัวอย่างที่ 1 หากผู้ผลิตวัตถุดิบ จัดส่งวัตถุดิบให้เป็นกล่อง โดย 1 กล่อง บรรจุ จำนวนวัตถุดิบ 1 โหล • ดังนั้น ปริมาณการสั่งซื้อที่ซื้อจริง จะไม่เท่ากับปริมาณการสั่งซื้อที่ดีที่สุดที่คำนวณได้ • เช่น ถ้าปริมาณการสั่งซื้อที่ดีที่สุด = 18 ชิ้น (อยู่ระหว่าง 1 โหล และ 2 โหล)จะต้องพิจารณาว่า ซื้อ 12 ชิ้น หรือ 24 ชิ้น ที่จะทำให้ต้นทุนต่ำกว่ากัน 12 ชิ้น 12 ชิ้น จำนวนที่ซื้อได้ (Upper case) เปรียบเทียบต้นทุน ** 18 ชิ้น ** ปริมาณการสั่งซื้อที่ดีที่สุด 12 ชิ้น จำนวนที่ซื้อได้ (Lower case)
ตัวอย่างที่ 2: Advanced Inventory Problem • ดังนั้น เมื่อคำนวณปริมาณการสั่งซื้อที่ดีที่สุดได้แล้ว จะต้องปัดให้เป็นจำนวนที่บรรจุในกล่องได้พอดี (บรรจุกล่องละ 12 ชิ้น) • ตรวจสอบเงื่อนไข ว่าจำนวนที่คำนวณได้หาร 12 ลงตัวหรือไม่ • Qo%12==0 • คำนวณต้นทุนกรณี Lower Case • LBox = floor(Qo/12); • LQ = 12*LBox; • LN = D/LQ; • LTC = (LQ*LN*M)+(LN*O)+(LQ/2*H); ใช้ในการตรวจสอบว่า Qoหารด้วย 12 ลงตัวหรือไม่ ถ้าหารลงตัว ผลลัพธ์จะมีค่าเท่ากับ 0 คำสั่ง floor ใช้ในการปัดเศษของสมาชิกของอาร์เรย์ลง ปริมาณการสั่งซื้อด้าน Lower จำนวนครั้งในการสั่งซื้อ ด้าน Lower ต้นทุนรวมในการสั่งซื้อ ด้าน Lower Material cost Ordering cost Holding cost
ตัวอย่างที่ 2: Advanced Inventory Problem • คำนวณต้นทุนกรณี Upper Case • UBox = ceil(Qo/12); • UQ = 12*UBox; • UN = D/UQ; • UTC = (UQ*UN*M)+(UN*O)+(UQ/2*H); • จากนั้นทำการเปรียบเทียบ LTC และ UTC ว่าต้นทุนด้านใดน้อยกว่า • เลือกทางเลือกที่ทำให้เกิดต้นทุนต่ำกว่า • สรุปและประมวลผล คำสั่ง ceil ใช้ในการปัดเศษของสมาชิกของอาร์เรย์ขึ้น ปริมาณการสั่งซื้อด้าน Upper จำนวนครั้งในการสั่งซื้อ ด้าน Upper ต้นทุนรวมในการสั่งซื้อ ด้าน Lower Material cost Ordering cost Holding cost
ผลลัพธ์จากตัวอย่างที่ 2 • ให้นักศึกษาทดลองเขียนโปรแกรมของตัวอย่างนี้
เฉลย ตัวอย่างที่ 1 (lamp.c) #include "stdio.h" void main(){ floatN,Q,M,O,H,MC,OC,HC,TC,TC_prev,D,Qo,No,TCo; inti; printf("Input demand of material (unit/year): "); scanf("%f", &D); printf("Input material cost (baht/unit): "); scanf("%f", &M); printf("Input ordering cost (baht/order): "); scanf("%f", &O); printf("Input holding cost (baht/unit/year): "); scanf("%f", &H); for ( i=1 ; i<=D ; i++ ){ Q = i; N = D/Q; MC = Q*N*M; OC = N*O; HC = Q/2.*H; TC = MC+OC+HC; if (i>1 && TC > TC_prev){ Qo = i-1; //Qoคือ ปริมาณการสั่งซื้อที่ทำให้เกิดต้นทุนต่ำที่สุด No = D/(i-1); //No คือ จำนวนครั้งในการซื้อของที่ทำให้เกิดต้นทุนต่ำที่สุด TCo = TC_prev;//TCoคือ ต้นทุนที่ต่ำที่สุดที่เกิดขึ้น MCo = Qo*No*M; OCo = No*O; HCo = Qo/2*H; break;} TC_prev=TC; } printf("The best quantity is: %.2f kg/order \n",Qo); printf("Number of order is: %.2f order/month \n",No); printf("Total Cost is: %.0f baht/month \n",TCo);} printf("\t Total material cost is: %.2f baht/year\n",MCo); printf("\t Total ordering cost is: %.2f baht/year\n",OCo); printf("\t Total holding cost is: %.2f baht/year\n",HCo); }
เฉลย ตัวอย่างที่ 2 (lamp2.c) ส่วนที่ 1/3 #include "stdio.h“ #include “math.h" void main(){ floatN,Q,M,O,H,MC,OC,HC,TC,TC_prev,D,Qo,No,Tco,LN,LTC,UN,UTC; inti,Lbox,LQ,Ubox,UQ; printf("Input demand of material (unit/year): "); scanf("%f", &D); printf("Input material cost (baht/unit): "); scanf("%f", &M); printf("Input ordering cost (baht/order): "); scanf("%f", &O); printf("Input holding cost (baht/unit/year): "); scanf("%f", &H); for ( i=1 ; i<=D ; i++ ){ Q = i; N = D/Q; MC = Q*N*M; OC = N*O; HC = Q/2.*H; TC = MC+OC+HC; if (i>1 && TC > TC_prev){ Qo = i-1; if (Qo%12 == 0) { No = D/(i-1); TCo = TC_prev; MCo = Qo*No*M; OCo = No*O; HCo = Qo/2*H;} } ตรวจสอบว่า Qoหารด้วย 12 ลงตัวหรือไม่
เฉลย ตัวอย่างที่ 2 (lamp2.c) ส่วนที่ 2/3 else { //คำนวณด้าน Lower case LBox = floor(Qo/12.); LQ = 12*LBox; LN = D/LQ; LTC = (LQ*LN*M)+(LN*O)+(LQ/2.*H); //คำนวณด้าน Upper case UBox = ceil(Qo/12.); UQ = 12*UBox; UN = D/UQ; UTC = (UQ*UN*M)+(UN*O)+(UQ/2.*H); ///เปรียบเทียบต้นทุน LTC และ UTC if (LTC < UTC){ Qo = LQ; Box = LBox; No = LN; TCo = LTC; MCo = LQ*LN*M; OCo = LN*O; HCo = LQ/2*H;} คำนวณต้นทุนกรณี Lower case คำนวณต้นทุนกรณี Upper case เปรียบเทียบต้นทุน กรณี Lower และ Upper case กรณี 1: Lower case ถูกกว่า
เฉลย ตัวอย่างที่ 2 (lamp2.c) ส่วนที่ 3/3 else{ Qo = UQ; Box = UBox; No = UN; TCo = UTC; MCo = UQ*UN*M; OCo = UN*O; HCo = UQ/2*H; } } break; } TC_prev=TC; } printf("The best quantity is: %.2f units/order or %d boxes/order \n",Qo,Box); printf("Number of order is: %.2f orders/year \n",No); printf("Total Cost is: %.2f baht/year \n",TCo); printf("\t Total material cost is: %.2f baht/year\n",MCo); printf("\t Total ordering cost is: %.2f baht/year\n",OCo); printf("\t Total holding cost is: %.2f baht/year\n",HCo); } เปรียบเทียบต้นทุน กรณี Lower และ Upper case กรณี 2: Upper case ถูกกว่า