ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingช่วยเขียนโปรแกรมทอนเงินภาษา JAVA ให้ทีครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: ช่วยเขียนโปรแกรมทอนเงินภาษา JAVA ให้ทีครับ  (อ่าน 12518 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
ChilTunDer
ก๊วนเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 318



ดูรายละเอียด
« เมื่อ: 10 ธันวาคม 2011, 11:36:02 »

เนื่องจากอยู่ ม.5 แล้วอยู่ดีๆอาจารย์ก็สั่งให้ไปหา code ใน google ให้หา code โปรแกรมทอนเงินภาษา JAVA ที่ไม่ใช้ Loop เลย (ผมก็งงว่า Loop มันคืออะไร) และสามารถทอนเงินเป็นเศษสตางค์ได้ด้วย (งงเข้าไปใหญ่) ให้คะแนนตั้ง 20 คะแนน พี่ๆช่วยทีนะครับ Huh?

ที่ผมคาใจคือว่าเขาสอน VB6 แต่ทำไมสั่งงานภาษา JAVA ซึ่งไม่รู้เรื่อง และไม่เคยเรียนเลย (อาจารย์บอกหา code มาได้จะอธิบายให้ฟังพร้อมให้คะแนน)  wanwan031
บันทึกการเข้า
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 = ??

?? นี่คงหมายถึงจำนวนแบงค์ที่ต้องหยิบทอนมั้งครับ  Tongue
« แก้ไขครั้งสุดท้าย: 10 ธันวาคม 2011, 11:41:47 โดย ChilTunDer » บันทึกการเข้า
ChilTunDer
ก๊วนเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 318



ดูรายละเอียด
« ตอบ #3 เมื่อ: 10 ธันวาคม 2011, 11:42:28 »

อยากให้พี่ช่วยอธิบายให้ด้วยหนะครับ เผื่อเข้าไปในห้องจะได้เข้าใจ กลัวจะงง  Smiley
บันทึกการเข้า
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 = ??

?? นี่คงหมายถึงจำนวนแบงค์ที่ต้องหยิบทอนมั้งครับ  Tongue


ลองแบบนี้ไหมครับ ผมทำเอง แนวคิดคือ อนไปสมัครงานแล้วเขาบอกให้เขียนโปรแกรมทอนเงิน โดยเรียงลำดับจากแบ้งค์ 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 ดู  wanwan019

โค๊ด:
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);
}
}

เขียนแบบดื้อๆ ไม่มีพลิกแพลงเลย  wanwan024
« แก้ไขครั้งสุดท้าย: 10 ธันวาคม 2011, 12:33:22 โดย gungsakab » บันทึกการเข้า
ChilTunDer
ก๊วนเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 318



ดูรายละเอียด
« ตอบ #8 เมื่อ: 10 ธันวาคม 2011, 12:46:49 »

ประมาณนี้ใช่ไหมครับ..พอดีไม่มีเครื่องลอง เลยนั่งๆเขียนใน otepad ดู  wanwan019

โค๊ด:
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);
}
}

เขียนแบบดื้อๆ ไม่มีพลิกแพลงเลย  wanwan024

ไม่รู้ว่าใช่รึป่าว เพราะว่าลองไม่เป็น ไม่ทราบว่าต้องเอาไปลองกับโปรแกรมอะไรหรอครับ

และมันสามารถคิดเป็นทศนิยมได้ไหม 
บันทึกการเข้า
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 สตางค์ด้วยอะครับ

ผมก็อธิบายไม่ถูกเหมือนกัน... Tongue

โทรไปถามเพื่อน เพื่อนบอกว่าใช้แค่คำสั่ง แสดงค่า กับ ประกาศตัวแปร แค่นั้น...
บันทึกการเข้า
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 »

นึกถึง narisa.com มีประมาณนี้อยู่
http://www.narisa.com/forums/index.php?showtopic=29810

มันระดับ สอบสัมภาษณ์เลยนะ แต่นี้ ม.5
http://www.narisa.com/forums/index.php?showtopic=33814
บันทึกการเข้า
หน้า: [1]   ขึ้นบน
พิมพ์