9Mcode comment |
|
|
|
|
|
โปรแกรมทอนเงิน
(อ่าน 22,531) |
|
นำเสนอโดย
9M / webmaster@sourcecode.in.th |
|
: ดาว์นโหลดไฟล์เฉลย
(ดาว์นโหลด 1,370 ครั้ง) |
|
- - - - - - - - - - - - - - ผู้ให้การสนับสนุน- - - - - - - - - - - - - -
|
|
|
รับพัฒนาโปรแกรม และเว็บ โดย 9'M |
|
โปรแกรมทอนเงิน |
คำชี้แจง
- วัตถุประสงค์ของการจัดทำมุมการบ้าน ขึ้นมาไม่ใช่เพียงเพื่อมีการบ้านส่งอาจารย์ หรือมีงานส่งวิชา แต่เป็นเพียงแนวทางสำหรับผู้เริ่มต้นได้นำข้อมูลไปศึกษาต่อด้วยตนเองต่อไปได้
- เฉลยที่มี อาจไม่ถูกต้อง ครบถ้วน เป็นเพียงแค่แนวทางให้ศึกษาเพียงเท่านั้น
- การพิจารณาโจทย์ว่าจะทำเฉลยหรือไม่ ขึ้นอยู่กับความยากง่าย ความพอใจและเวลาว่างของกระผม 9'M (นายเอ็ม) ไม่ได้นำความเร่งรีบของการส่งงานหรือเหตุผลอื่นใดมาพิจารณา
คำแนะนำ
- เฉลยที่ได้ไป ควรนำไปทดสอบ อาจเขียนโปรแกรมตามเฉลย ศึกษาทำความเข้าใจการทำงาน
- ทดลองเขียนโปรแกรมด้วยตนเอง อาจเปิดเฉลยควบคู่ จนจดจำคำสั่งและเข้าใจการทำงานได้ดี
- การเขียนโปรแกรมเป็นทักษะ และความรู้ความเข้าใจ ดังนั้นการฝึกเขียนบ่อยๆ เรียนรู้คำสั่งใหม่ๆ พบเจอปัญหาใหม่และแก้ไข เป็นการเพิ่มพูนทักษะ รวมทั้งการแบ่งปันความรู้ให้ผู้อื่นยิ่งทำให้ผู้สอน เกิดความชำนาญในการเขียนโปรแกรมมากยิ่งขึ้น
|
จากโจทย์ในเว็บ http://www.sourcecode.in.th/wbread.php?no=1146 เป็นการเขียนโปรแกรมทอนเงิน
โจทย์
จงเขียนโปรแกรมทอนเงิน โดยป้อนจำนวนเงินที่จะต้องจ่าย จำนวนเงินที่ลูกค้าจ่ายมา และแสดงผลลัพท์ในรูปเงินทอน เป็นเหรียญและธนบัตร ราคาต่างๆ
เช่น ราคาสินค้าเท่ากับ 153 บาท เงินที่ลูกค้าจ่ายเท่ากับ 500 บาท จะทอนเงินได้ ธนบัตร 100 บาท 3 ใบ ธนบัตร 20 บาท 2 ใบ เหรียญ 5 บาท 1 เหรียญ เหรียญบาท 2 เหรียญ
/*
@Author:Mr.Suppakit Thongdee
@Website: www.sourcecode.in.th
*/
#include "stdio.h"
#include "conio.h"
void main(){
int cost;
int pay;
int change;
int amount;
clrscr();
printf("input Cost value (baht):");
scanf("%d",&cost);
printf("input Pay value (baht):");
scanf("%d",&pay);
printf("-----------------------\n");
if(pay >= cost){
change = pay - cost;
printf("Change = %d\n",change);
printf("-----------------------\n");
//1000 bill
amount = change / 1000;
printf("1,000 Bill :%d\n",amount);
change = change % 1000;
//500 bill
amount = change / 500;
printf("500 Bill :%d\n",amount);
change = change % 500;
//100 bill
amount = change / 100;
printf("100 Bill :%d\n",amount);
change = change % 100;
//50 bill
amount = change / 50;
printf("50 Bill :%d\n",amount);
change = change % 50;
//20 bill
amount = change / 20;
printf("20 Bill :%d\n",amount);
change = change % 20;
//10 coin
amount = change / 10;
printf("10 Coin :%d\n",amount);
change = change % 10;
//5 coin
amount = change / 5;
printf("5 Coin :%d\n",amount);
change = change % 5;
//1 coin
amount = change;
printf("1 Coin :%d\n",amount);
}else{
printf("please Pay more.\n");
}
getch();
}
|
: ดาว์นโหลดไฟล์เฉลย
(ดาว์นโหลด 1,370 ครั้ง) |
|
|
|
|
- - - - - - - - - - - - - - ผู้ให้การสนับสนุน- - - - - - - - - - - - - -
|
|
|
ความคิดเห็น #9 (จาก IP: 171.4.251.128)
ทำเป็น flowchart ยังไงครับ งง? ช่วยบอกหน่วยครับ input process output อะไร
|
จากคุณ
:
เบส / loveful_606@hotmail.com [2013-12-26 20:33:11]
|
|
ความคิดเห็น #10 (จาก IP: 111.84.130.70)
ปกติ การเขียนโปรแกรม ควรทำเป็น flowchart ก่อน แล้วค่อยแปลงมาเป็นโค้ด แต่หากใครชำนาญแล้วหรือโปรแกรมไม่ยุ่งยาก ก็ไม่ต้องเขียน flowchart (แต่ก็ควรเขียนเพื่อกลับมาอ่านทีหลังได้เข้าใจ และคนอื่นอ่านเข้าใจ)
ดังนั้น คุณแปลงคำสั่งต่างๆ โดยรวมเป็นกลุ่ม เช่น input ก็พวกคำสั่ง scanf, getch process ก็พวกคำสั่งที่ใช้คำนวณต่างๆ output ก็พวกแสดงผลออกมา ทางหน้าจอ เช่น printf decision ก็พวกคำสั่ง if-else ต่างๆ
|
จากคุณ
:
maddog [2013-12-27 15:31:56]
|
|
ความคิดเห็น #13 (จาก IP: 202.29.179.65)
หนูอยากทราบว่า โปรแกรมทอนเงิน ทำไมต้องเอามาหารกับเอามา % อ่ะคะ amount = change / 10; change = change % 10; คือหนูงงตรงนี้จริงๆค่ะ ช่วยอธิบายให้หน่อยนะคะ ขอบคุณค่ะ
|
จากคุณ
:
wasan / project-_s@hotmail.com [2014-01-24 09:16:20]
|
|
ความคิดเห็น #14 (จาก IP: 1.20.156.189)
amount = change / 10; คือการหารเอาจำนวนเต็มเช่น 15/10 =1 แปลว่ามีเหรียญ 10 จำนวน 1 เหรียญ
change = change % 10; คือการหารเอาจำนวนเศษเช่น 15%10 =5 แปลว่ามีเงินเหลือ 5
|
จากคุณ
:
maddog [2014-01-25 00:19:03]
|
|
ความคิดเห็น #15 (จาก IP: 202.29.179.65)
ความคิดเห็น #56 (จาก IP: 49.237.218.105)
แล้วถ้าเราไม่ใส่ change = change % 1000; ได้ไหมคะ มันมีผลต่อการแสดงผลของโปรแกรมรึเปล่า ถ้ามีมันมีผลตรงส่วนไหนคะ รบกวนด้วยนะคะ
|
จากคุณ
:
kanokwan / suwannakoot.kanokwan@gmail.com [2015-11-07 21:25:02]
|
|
ความคิดเห็น #57 (จาก IP: 184.22.9.171)
ลองแก้ไขดูสิครับ แล้วลอง printf ค่าออกมาดู แล้วก็ลองทำความเข้าใจดู มันจะทำให้คุณเข้าใจ
|
จากคุณ
:
maddog [2015-11-07 22:51:02]
|
|
ความคิดเห็น #58 (จาก IP: 58.9.76.90)
ขออนุญาตค่ะ ถ้าเป็นแบบนี้ละค่ะ จะเปลี่ยน cout,cin เป็นแบบ print,scanf จะทำได้อย่างไรค่ะ หนูลองรันดูแล้วตัวเลขเงินทอนไม่ขึ้นค่ะช่วยหน่อยค่ะ ขอบคุณค่ะ
#include <stdio.h> int main(int argc,char*argv[]) { double change,left,sumchange; double goods,money; int thousand,fivehundred,onehundred,fifty,twenty, ten,five,one,fiftysatang,twentyfivesatang;
printf("Please enter goods value :"); scanf("%f",&goods); printf("Please money from customer :"); scanf("%f",&money); change = goods - money; printf("change = %.2f\n",change); printf("------------\n");
thousand = (int) change / 1000; sumchange = (double) thousand*1000; left = change- sumchange;
fivehundred = (int) left / 500; sumchange = (double) fivehundred *500; left = left- sumchange;
onehundred =(int) left / 100; sumchange = (double) onehundred*100; left = left- sumchange;
fifty=(int) left / 50; sumchange = (double) fifty*50; left = left- sumchange;
twenty=(int) left / 20; sumchange = (double) twenty*20; left = left- sumchange;
ten=(int) left / 10; sumchange = (double) ten*10;
five=(int) left / 5; sumchange = (double) five*5; left = left- sumchange;
one=(int) left; sumchange = (double) one; left = left- sumchange;
fiftysatang =(int) (left*100)/50; sumchange = (double)(fiftysatang*50)/100; left = left- sumchange;
twentyfivesatang=(int) (left*100)/25; sumchange = (double)(twentyfivesatang*25)/100; left = left- sumchange;
printf("change \n",change); printf("1000 \n",thousand); printf("500 \n ",fivehundred); printf("100 \n ",onehundred); printf("50 \n",fifty); printf("20 \n",twenty); printf("10 \n" ,ten); printf("5 \n",five); printf("1 \n",one); printf("50 satang \n ",fiftysatang); printf("25 satang \n ",twentyfivesatang); printf("satang left \n ",left); return 0; }
|
จากคุณ
:
ดารินทร์ / aom.tuktik@gmail.com [2015-11-15 19:22:03]
|
|
ความคิดเห็น #59 (จาก IP: 110.168.232.24)
ลืมอะไรไปหรือเปล่าครับ printf("change %lf \n",change);
|
จากคุณ
:
maddog [2015-11-16 15:46:29]
|
|
ความคิดเห็น #60 (จาก IP: 58.9.76.90)
ถ้าหนูไม่เอา if มาเกี่ยวข้องด้วย หนูต้องมี printf("change %lf \n",change); อย่างเดียวใช่มั้ยค่ะ ในโค้ดหนูไม่มี if ค่ะ
|
จากคุณ
:
ดารินทร์ / aom.tuktik@gmail.com [2015-11-16 22:03:02]
|
|
ความคิดเห็น #61 (จาก IP: 49.228.84.117)
ลองคิดสักหน่อยครับ if มีไว้สำหรับทำอะไร การมีหรือไม่มี ต่างกันอย่างไร
คือไม่อยากให้ท่องหรืออะไร อยากให้ทำความเข้าใจ แต่ดูจากคำถาม งงๆ เหมือนไม่รู้ว่า if ไว้ทำอะไร แค่ก๊อบโค้ดมาแก้ๆมั่วๆ ซึ่งก็ไม่ดีครับ
แนะนำว่าให้อ่านทำความเข้าใจโค้ด แล้วเขียนเป็น flow การทำงาน
|
จากคุณ
:
maddog [2015-11-17 00:31:50]
|
|
ความคิดเห็น #62 (จาก IP: 58.9.76.90)
จริงๆแล้วโค้ดจริงๆเป็นแบบนี้ค่ะ แต่ติ๊กแค่จะลองแก้จาก cin,cout ให้เป็น printf,scanf ค่ะ ติ๊กลองรันดู เงินทอนไม่ออกค่ะ ก็เลยสงสัยค่ะว่าจะเป็นตรงจุดไหนที่ทำให้เงินทอน และส่วนของ money-good รันออกมาแล้ว =0 พอดีพึ่งได้เรียนค่ะ เลยไม่ค่อยเข้าใจค่ะ ต้องลองศึกษาเยอะอีกนิดค่ะ
#include <stdio.h> #include<iostream> using namespace std;
double goods,money; int thousand,fivehundred,onehundred,fifty,twenty, ten,five,one,fiftysatang,twentyfivesatang; int main(int argc,char*argv[]) { double change,left,sumchange;
cout <<"Please enter goods value :"; cin >> goods;
cout <<"Please money from customer :"; cin >> money;
change=money-goods;
thousand = (int) change / 1000; sumchange = (double) thousand*1000; left = change- sumchange;
fivehundred = (int) left / 500; sumchange = (double) fivehundred *500; left = left- sumchange;
onehundred =(int) left / 100; sumchange = (double) onehundred*100; left = left- sumchange;
fifty=(int) left / 50; sumchange = (double) fifty*50; left = left- sumchange;
twenty=(int) left / 20; sumchange = (double) twenty*20; left = left- sumchange;
ten=(int) left / 10; sumchange = (double) ten*10;
five=(int) left / 5; sumchange = (double) five*5; left = left- sumchange;
one=(int) left; sumchange = (double) one; left = left- sumchange;
fiftysatang =(int) (left*100)/50; sumchange = (double)(fiftysatang*50)/100; left = left- sumchange;
twentyfivesatang=(int) (left*100)/25; sumchange = (double)(twentyfivesatang*25)/100; left = left- sumchange;
cout<<"change : "<< change<<endl; cout<<"1000 note : "<< thousand <<endl; cout<<"500 note : "<< fivehundred <<endl; cout<<"100 note : "<< onehundred <<endl; cout<<"50 note : "<< fifty <<endl; cout<<"20 note : "<< twenty <<endl; cout<<"10 note : "<< ten <<endl; cout<<"5 note : "<< five <<endl; cout<<"1 coin : "<< one<<endl; cout<<"50 satang coin : "<< fiftysatang <<endl; cout<<"25 satang coin : "<< twentyfivesatang <<endl; cout<<"satang left :" << left; return 0; }
|
จากคุณ
:
ดารินทร์ / aom.tuktik@gmail.com [2015-11-17 20:22:38]
|
|
ความคิดเห็น #63 (จาก IP: 110.168.232.176)
ก็แค่ ไล่กลับไปครับ ว่าค่าหายไป หรือไม่ ไล่ย้อนกลับไปที่เรื่อย โดย // comment โค้ดหลังๆออกไป แล้วเพิ่มการ cout ค่าที่เราต้องการตรวจสอบ
ทั้งหมดนี้เรียกว่าการ debug ไล่หาเรื่อยๆจนกว่าจะพบว่าค่าในจุดไหนที่หายไปแล้วทำการแก้ไข
|
จากคุณ
:
maddog [2015-11-20 09:33:24]
|
|
ความคิดเห็น #474 (จาก IP: 101.109.30.168)
อาจารย์เขาบอกแนวข้อสอบมาว่า ให้เขียนโปรแกรมคำนวณเงินทอน โดยรับ ราคาสินค้า จำนวนเงิน ให้คำนวณจำนวนเงินทอนเป็นเหรียญ 10,5 และ 1 บาท ให้เขียนเป็นภาษา Java
|
จากคุณ
:
ปัณฑารีย์ / biizbank.15045@gmail.com [2019-04-27 00:44:29]
|
|
ความคิดเห็น #475 (จาก IP: 184.22.208.252)
ผมไม่อยากให้คุณได้คะแนนโดยที่คุณไม่ได้ความรู้เลย
อันนี้เป็นตัวอย่างโค้ดการแลกเงิน http://www.sourcecode.in.th/homeworks.php?id=33
สิ่งที่คุณต้องทำเพิ่มคือ รับจำนวนเงิน แล้วมาลบกับราคาสินค้า แล้วก็นำ เงินทอนที่ได้ ไปทำงานกับโค้ดแลกเงินตัวอย่างที่มี
ขอให้โชคดีครับ
|
จากคุณ
:
maddog [2019-04-27 01:29:07]
|
|
|
|
|
|
|