ChilTunDer
ก๊วนเสียว
พลังน้ำใจ: 3
ออฟไลน์
กระทู้: 318
|
 |
« เมื่อ: 10 ธันวาคม 2011, 11:36:02 » |
|
เนื่องจากอยู่ ม.5 แล้วอยู่ดีๆอาจารย์ก็สั่งให้ไปหา code ใน google ให้หา code โปรแกรมทอนเงินภาษา JAVA ที่ไม่ใช้ Loop เลย (ผมก็งงว่า Loop มันคืออะไร) และสามารถทอนเงินเป็นเศษสตางค์ได้ด้วย (งงเข้าไปใหญ่) ให้คะแนนตั้ง 20 คะแนน พี่ๆช่วยทีนะครับ  ที่ผมคาใจคือว่าเขาสอน VB6 แต่ทำไมสั่งงานภาษา JAVA ซึ่งไม่รู้เรื่อง และไม่เคยเรียนเลย (อาจารย์บอกหา code มาได้จะอธิบายให้ฟังพร้อมให้คะแนน) 
|
|
|
บันทึกการเข้า
|
|
|
|
marknary
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 273
ออฟไลน์
กระทู้: 1,134
|
 |
« ตอบ #1 เมื่อ: 10 ธันวาคม 2011, 11:36:51 » |
|
ขอ โจทย์เต็มๆ และ ขอบเขตของ input out put ด้วยครับ
|
|
« แก้ไขครั้งสุดท้าย: 10 ธันวาคม 2011, 11:37:15 โดย marknary »
|
บันทึกการเข้า
|
|
|
|
ChilTunDer
ก๊วนเสียว
พลังน้ำใจ: 3
ออฟไลน์
กระทู้: 318
|
 |
« ตอบ #2 เมื่อ: 10 ธันวาคม 2011, 11:41:03 » |
|
รูปที่ให้มาในกระดาษเป็นประมาณนี้หนะครับ ป้อนข้อมูลให้กำหนดมาเลย เช่น รวม 100 รับเงิน 200 1000 = ?? 500 = ?? 100 = ?? 50 = ?? 20 = ?? 10 = ?? 5 = ?? 2 = ?? 1 = ?? 0.50 = ?? 0.25 = ?? ?? นี่คงหมายถึงจำนวนแบงค์ที่ต้องหยิบทอนมั้งครับ 
|
|
« แก้ไขครั้งสุดท้าย: 10 ธันวาคม 2011, 11:41:47 โดย ChilTunDer »
|
บันทึกการเข้า
|
|
|
|
ChilTunDer
ก๊วนเสียว
พลังน้ำใจ: 3
ออฟไลน์
กระทู้: 318
|
 |
« ตอบ #3 เมื่อ: 10 ธันวาคม 2011, 11:42:28 » |
|
อยากให้พี่ช่วยอธิบายให้ด้วยหนะครับ เผื่อเข้าไปในห้องจะได้เข้าใจ กลัวจะงง 
|
|
|
บันทึกการเข้า
|
|
|
|
marknary
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 273
ออฟไลน์
กระทู้: 1,134
|
 |
« ตอบ #4 เมื่อ: 10 ธันวาคม 2011, 11:46:35 » |
|
โห วิธีการทอนเงินนี่มีมากมาย เอาเป็นว่า ผมจะทำแบบ ทอนแล้วใช้จำนวนแบงค์เรียงจาก 1000 ลงมา แนวคิด เอา เงินที่รับ - ราคารวม เก็บไว้ในตัวแปรนึง สมมุติชื่อ a และใช้ตัวแปรช่วยจำอีกตัวนึง b=0 สมมุติว่า รับมา 150 เงินซื้อของ 105 บาท ในที่นี้ a=45 b=0 ผมเขียนเป็น python ละกันนะครับ a=105.75 b=0 print'1000='+str(int(a/1000)) b=1000*int(a/1000) a=a-b print '500='+str(int(a/500)) b=500*int(a/500) a=a-b print'100='+str(int(a/100)) b=100*int(a/100) a=a-b print '50='+str(int(a/50)) b=50*int(a/50) a=a-b print '20='+str(int(a/20)) b=20*int(a/20) a=a-b print '10='+str(int(a/10)) b=10*int(a/10) a=a-b print '5='+str(int(a/5)) b=5*int(a/5) a=a-b print '1='+str(int(a/1)) b=1*int(a/1) a=a-b print '0.5='+str(int(a/0.5)) b=0.5*int(a/0.5) a=a-b print '0.25='+str(int(a/0.25)) b=0.25*int(a/0.25)
|
|
« แก้ไขครั้งสุดท้าย: 10 ธันวาคม 2011, 12:23:37 โดย marknary »
|
บันทึกการเข้า
|
|
|
|
club-love
ก๊วนเสียว
พลังน้ำใจ: 24
ออฟไลน์
กระทู้: 325
|
 |
« ตอบ #5 เมื่อ: 10 ธันวาคม 2011, 11:54:11 » |
|
รูปที่ให้มาในกระดาษเป็นประมาณนี้หนะครับ ป้อนข้อมูลให้กำหนดมาเลย เช่น รวม 100 รับเงิน 200 1000 = ?? 500 = ?? 100 = ?? 50 = ?? 20 = ?? 10 = ?? 5 = ?? 2 = ?? 1 = ?? 0.50 = ?? 0.25 = ?? ?? นี่คงหมายถึงจำนวนแบงค์ที่ต้องหยิบทอนมั้งครับ  ลองแบบนี้ไหมครับ ผมทำเอง แนวคิดคือ อนไปสมัครงานแล้วเขาบอกให้เขียนโปรแกรมทอนเงิน โดยเรียงลำดับจากแบ้งค์ 1000 มาก่อน เลยงง ๆ จึงกลับมาที่ห้องแล้วคิดทำ ตัวอย่างแบบนี้ใช่ไหมครับ เขียนจาก code php แต่ถ้าแปลเป็น java คงไม่ยากหรอกครับ (หมายถึง javascript ใช่ไหมครับ) จบในหน้าเดียว code สั้น ๆ หากอยากดู script ลอง PM มาได้นะครับ http://www.yonghong.co.th/payment/payment.php  ตัวอย่างภาพ  จากเงินในคลังมี แบงค์อย่างละ 100 ใบ และเหรียญอย่างละ 100 เหรียญ
|
|
« แก้ไขครั้งสุดท้าย: 10 ธันวาคม 2011, 14:05:50 โดย club-love »
|
บันทึกการเข้า
|
|
|
|
seowizard
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 102
ออฟไลน์
กระทู้: 1,119
|
 |
« ตอบ #6 เมื่อ: 10 ธันวาคม 2011, 12:15:10 » |
|
หลัก ๆที่ต้องใช้ คือ Array + Recursive ครับ
ส่วนตัวอย่างมีใน google ครับ ลอง search หาดี ๆ
|
|
|
บันทึกการเข้า
|
|
|
|
gungsakab
ก๊วนเสียว
พลังน้ำใจ: 7
ออฟไลน์
กระทู้: 230
|
 |
« ตอบ #7 เมื่อ: 10 ธันวาคม 2011, 12:32:56 » |
|
ประมาณนี้ใช่ไหมครับ..พอดีไม่มีเครื่องลอง เลยนั่งๆเขียนใน otepad ดู  public class Clash { public static void main(String[] args){ int money = 150; int totalPrice = 50; int a = money - totalPrice; System.out.println("a ="+a); int b1000 = a / 1000; int bm1000 = a % 1000; System.out.println("1000 => "+b1000); //System.out.println("1000 => "+bm1000); int b500 = bm1000 / 500; int bm500 = bm1000 % 500; System.out.println("500 => "+b500); //System.out.println("500 => "+bm500); int b100 = bm500 / 100; int bm100 = bm500 % 100; System.out.println("100 => "+b100); //System.out.println("100 => "+bm100); int b50 = bm100 / 50; int bm50 = bm100 % 50; System.out.println("50 => "+b50); //System.out.println("50 => "+bm50); int b20 = bm50 / 20; int bm20 = bm50 % 20; System.out.println("20 => "+b20); //System.out.println("20 => "+bm20); int b10 = bm20 / 10; int bm10 = bm20 % 10; System.out.println("10 => "+b10); //System.out.println("10 => "+bm10); int b5 = bm10 / 5; int bm5 = bm10 % 5; System.out.println("5 => "+b5); //System.out.println("5 => "+bm5); int b2 = bm5 / 2; int bm2 = bm5 % 2; System.out.println("2 => "+b2); //System.out.println("2 => "+bm2); int b1 = bm2 / 1; int bm1 = bm2 % 1; System.out.println("1 => "+bm1); //System.out.println("1 => "+bm1); } } เขียนแบบดื้อๆ ไม่มีพลิกแพลงเลย 
|
|
« แก้ไขครั้งสุดท้าย: 10 ธันวาคม 2011, 12:33:22 โดย gungsakab »
|
บันทึกการเข้า
|
|
|
|
ChilTunDer
ก๊วนเสียว
พลังน้ำใจ: 3
ออฟไลน์
กระทู้: 318
|
 |
« ตอบ #8 เมื่อ: 10 ธันวาคม 2011, 12:46:49 » |
|
ประมาณนี้ใช่ไหมครับ..พอดีไม่มีเครื่องลอง เลยนั่งๆเขียนใน otepad ดู  public class Clash { public static void main(String[] args){ int money = 150; int totalPrice = 50; int a = money - totalPrice; System.out.println("a ="+a); int b1000 = a / 1000; int bm1000 = a % 1000; System.out.println("1000 => "+b1000); //System.out.println("1000 => "+bm1000); int b500 = bm1000 / 500; int bm500 = bm1000 % 500; System.out.println("500 => "+b500); //System.out.println("500 => "+bm500); int b100 = bm500 / 100; int bm100 = bm500 % 100; System.out.println("100 => "+b100); //System.out.println("100 => "+bm100); int b50 = bm100 / 50; int bm50 = bm100 % 50; System.out.println("50 => "+b50); //System.out.println("50 => "+bm50); int b20 = bm50 / 20; int bm20 = bm50 % 20; System.out.println("20 => "+b20); //System.out.println("20 => "+bm20); int b10 = bm20 / 10; int bm10 = bm20 % 10; System.out.println("10 => "+b10); //System.out.println("10 => "+bm10); int b5 = bm10 / 5; int bm5 = bm10 % 5; System.out.println("5 => "+b5); //System.out.println("5 => "+bm5); int b2 = bm5 / 2; int bm2 = bm5 % 2; System.out.println("2 => "+b2); //System.out.println("2 => "+bm2); int b1 = bm2 / 1; int bm1 = bm2 % 1; System.out.println("1 => "+bm1); //System.out.println("1 => "+bm1); } } เขียนแบบดื้อๆ ไม่มีพลิกแพลงเลย  ไม่รู้ว่าใช่รึป่าว เพราะว่าลองไม่เป็น ไม่ทราบว่าต้องเอาไปลองกับโปรแกรมอะไรหรอครับ และมันสามารถคิดเป็นทศนิยมได้ไหม
|
|
|
บันทึกการเข้า
|
|
|
|
bonshington
ก๊วนเสียว
พลังน้ำใจ: 47
ออฟไลน์
กระทู้: 376
|
 |
« ตอบ #9 เมื่อ: 10 ธันวาคม 2011, 13:09:33 » |
|
อจ ไม่ให้ใช้ loop แปละว่า เค้าให้ใช้ "recursive"
enum Change: int{ Thousand = 1000, FiveHundred = 500, OneHundred = 100, Fifty = 50, Twenty = 20, Ten = 10, Five = 5, One = 1 }
public static LinkedList<Change> Change(int total, int recieve){ LiskedList<Change> change = ... CalculateChange(recieve - total, change); return change; }
public static void CalculateChange(int money, LinkedList<Change> change){ if(money > Change.Thousand){ change.add(Change.Thousand); CalculateChange(money - Change.Thousand, change); } else if(money > Change.FiveHundred){ change.add(Change.FiveHundred); CalculateChange(money - Change.FiveHundred, change); } ... else if (money > Change.Five){ change.Add(Change.Five); CalculateChange(money - Change.Five, change); } else{ for(int i = 0; i < money; i++) change.add(Change.One); } }
|
|
« แก้ไขครั้งสุดท้าย: 10 ธันวาคม 2011, 13:11:12 โดย bonshington »
|
บันทึกการเข้า
|
|
|
|
SpiderManKing
คนรักเสียว
พลังน้ำใจ: 24
ออฟไลน์
กระทู้: 102
|
 |
« ตอบ #10 เมื่อ: 10 ธันวาคม 2011, 14:08:25 » |
|
package money;
class MoneyBreak {
private int clash; private MoneyBreak moneyBreak; private int breakNumber;
public MoneyBreak(int breakNumber) { this.breakNumber = breakNumber; }
public int getClash() { return clash; }
public void setClash(int clash) { this.clash = clash; }
public int getBreakNumber() { return breakNumber; }
public void setBreakNumber(int breakNumber) { this.breakNumber = breakNumber; }
public MoneyBreak setSuccessort(MoneyBreak moneyBreak) { this.moneyBreak = moneyBreak; return this.moneyBreak; }
public void run() { int leaveMoney = this.clash / this.breakNumber; int leaveClash = this.clash % this.breakNumber; System.out.println(this.breakNumber + " => " + leaveMoney); if (this.moneyBreak != null) { this.moneyBreak.setClash(leaveClash); this.moneyBreak.run(); }
} }
public class MoneyTest {
public static void main(String[] args) {
MoneyBreak mb1000 = new MoneyBreak(1000); MoneyBreak mb500 = new MoneyBreak(500); MoneyBreak mb100 = new MoneyBreak(100); MoneyBreak mb50 = new MoneyBreak(50); MoneyBreak mb10 = new MoneyBreak(10); MoneyBreak mb5 = new MoneyBreak(5); MoneyBreak mb2 = new MoneyBreak(2); MoneyBreak mb1 = new MoneyBreak(1); int money=11953; System.out.println("Money " +money); System.out.println("\nRun 1"); mb1000.setSuccessort(mb500).setSuccessort(mb100) .setSuccessort(mb50).setSuccessort(mb10) .setSuccessort(mb5).setSuccessort(mb2).setSuccessort(mb1);
mb1000.setClash(money); mb1000.run(); System.out.println("\nRun 2"); mb1000.setSuccessort(mb500).setSuccessort(mb100) .setSuccessort(mb10) .setSuccessort(mb1);
mb1000.setClash(money); mb1000.run(); System.out.println("\nRun 3"); mb500.setSuccessort(mb50) .setSuccessort(mb10) .setSuccessort(mb1);
mb500.setClash(money); mb500.run(); System.out.println("\nRun 4"); mb50.setSuccessort(mb10) .setSuccessort(mb5) .setSuccessort(mb2) .setSuccessort(mb1);
mb50.setClash(money); mb50.run(); } }
ผลการทำงาน
Money 11953
Run 1 1000 => 11 500 => 1 100 => 4 50 => 1 10 => 0 5 => 0 2 => 1 1 => 1
Run 2 1000 => 11 500 => 1 100 => 4 10 => 5 1 => 3
Run 3 500 => 23 50 => 9 10 => 0 1 => 3
Run 4 50 => 239 10 => 0 5 => 0 2 => 1 1 => 1
ใช้ Design Pattern ที่เรียกว่า Chain of Responsibility
|
|
|
บันทึกการเข้า
|
|
|
|
ChilTunDer
ก๊วนเสียว
พลังน้ำใจ: 3
ออฟไลน์
กระทู้: 318
|
 |
« ตอบ #11 เมื่อ: 10 ธันวาคม 2011, 18:25:06 » |
|
คือมันไม่ใช่สคริปจาวา ติดเว็บอะครับ ที่อาจารย์เอามาให้ดูคล้ายๆกับคุณ gungsakab อะครับ แต่ว่าต้องคิดเป็นทศนิยมได้ด้วยคือประมาณว่าต้องมีเหรียญ 50 สตางค์ และ 25 สตางค์ด้วยอะครับ ผมก็อธิบายไม่ถูกเหมือนกัน...  โทรไปถามเพื่อน เพื่อนบอกว่าใช้แค่คำสั่ง แสดงค่า กับ ประกาศตัวแปร แค่นั้น...
|
|
|
บันทึกการเข้า
|
|
|
|
bonshington
ก๊วนเสียว
พลังน้ำใจ: 47
ออฟไลน์
กระทู้: 376
|
 |
« ตอบ #12 เมื่อ: 10 ธันวาคม 2011, 20:46:12 » |
|
ไม่ต้องหาไปส่งหรอกคับ อจ แม่งหาจาก google ไม่เจอ เลยมาใช้เด็ก
ม.5 เป็นไปไม่ได้หรอกที่จะทำอันนี้
|
|
|
บันทึกการเข้า
|
|
|
|
suwat82
ก๊วนเสียว
พลังน้ำใจ: 15
ออฟไลน์
กระทู้: 203
|
 |
« ตอบ #13 เมื่อ: 10 ธันวาคม 2011, 21:44:32 » |
|
ดูจากโจทย์ของอาจารย์แล้ว คงจะต้อง ประกาศตัวแปรดัวยการรับขอมูลราคาสินค้าจาำกแป้นพิมพ์ จำนวนแบงค์พัน ถึงเหรียญสลึงอาจจะต้องกำหนดค่าไว้
|
|
|
บันทึกการเข้า
|
|
|
|
ohmohm
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 170
ออฟไลน์
กระทู้: 3,098
|
 |
« ตอบ #14 เมื่อ: 13 ธันวาคม 2011, 16:46:13 » |
|
|
|
|
บันทึกการเข้า
|
|
|
|
|