วันศุกร์ที่ 20 กันยายน พ.ศ. 2556

Fraction


Fraction For KorRoNor And HorRoMor

นี่เป็นการสร้างฟังก์ชั่นสำหรับใช้ในการสร้างเศษส่วน ต้องมีการกำหนดเงื่อนไขหลายแบบ และเขียนฟังก์ชั่นเฉพาะการสร้างเศษส่วน รวมทั้งกำหนดตัวแปรในการสร้างเศษส่วน นอกจากนี้ผมได้ออกแบบการสร้างเศษส่วนเฉพาะการหา ห..ม และ ค..น ซึ่งทั้งสองอย่างนี้มีรูปแบบเฉพาะในการเขียนฟังก์ชั่นเพื่อการคำนวณ สำหรับการกำหนดตัวแปรในการสร้างเศษส่วน สามารถกำหนดตัวแปรให้มีค่าเป็นจำนวนเต็มอะไรก็ได้ ส่วนใหญ่เรามักกำหนดการทำงานของฟังก์ชั่นชนิดนี้ไว้ใน setup แต่ต้องมีการกำหนด class และฟังก์ชั่นสำหรับการทำงานไว้ก่อน และถ้าเป็นไปได้ ควรให้โปรแกรมแสดงผลลัพธ์ออกมาให้เห็นเพื่อความแน่ใจ อันดับแรกควรเขียน class Diagram ออกมาให้ได้แบบนี้


class diagram

name: fraction
attribute:
 n: int
 d: int
method:
 fraction(a: int, b: int)
 add(x: int)
 tostring(): String
 eq(fraction k): boolean
 over(k: fraction k)

Processing Code

void setup() {  //ฟังก์ชั่นหลักที่ใช้ในการกำหนดค่า และเรียกใช้สิ่งต่างๆ เป็นฟังก์ชั่นที่ไม่มีการวกกลับ
  fraction f = new fraction(7, 8);  //ฟังก์ชั่นที่ใช้กำหนดในการสร้างเศษส่วน โดย fraction(เศษ, ส่วน)
  println(f.tostring());  //แสดงผลลัพธ์ของเศษส่วน f ซึ่งก็คือ 7/8
  fraction g = new fraction(10, 25);  
  println(g.tostring());  //แสดงผลลัพธ์ของเศษส่วน g ซึ่งก็คือ 10/25
  //เทียบค่าเศษส่วน g กับเศษส่วน f
  if (f.eq(g)==true) {  //กำหนดเงื่อนไขในกรณีที่เศษส่วนของฟังก์ชั่น f เท่ากับ g ถ้าใช่ทำตามเงื่อนไขในวงเล็บปีกกา
    println(f.tostring()+" = "+g.tostring());  //แสดงผลลัพธ์ว่า เศษส่วนของฟังก์ชั่น f เท่ากับ g
  }
  else {  //กำหนดเงื่อนไขอีกกรณีหนึ่ง
    println(f.tostring()+" != "+g.tostring());  //แสดงผลลัพธ์ว่า เศษส่วน f แบบแฟคตอเรียลเท่ากับเศษส่วน g นั่นคือ 7/8 ! = 10/25
  }
  print(f.tostring()+" + "+g.tostring());  //แสดงผลลัพธ์ที่เศษส่วน f บวกกับเศษส่วน g นั่นคือ 7/8+10/25
  f.over(g);  //บวกเศษส่วน f กับ g เท่ากับ 255/200
  println(" = "+f.tostring());  //แสดงผลที่ได้จากการที่เศษส่วน f มารวมกับเศษส่วน g นั่นคือ = 255/200
  print(f.tostring()+" + 3");  //แสดงผลลัพธ์ที่นำเศษส่วน f ที่ได้จากข้างบนมาบวกกับ 3 นั่นคือ 225/200+3
  f.add(3);  //นำเศษส่วน f มาบวกกับ 3
  println(" = "+f.tostring());  //แสดงผลลัพธ์ที่ได้จากการนำเศษส่วน f มาบวกกับ 3 คือ = 855/200
}
class fraction {  //สร้าง class ชื่อ fraction
  int n;  //สร้างตัวแปร n ไว้เก็บค่าเศษ
  int d;  //สร้างตัวแปร d ไว้เก็บค่าส่วน
  fraction(int a, int b) {  //กำหนดฟังก์ชั่นเศษส่วนที่มี parameter
    this.n = a;  //กำหนดให้ค่าของ n เท่ากับ a
    this.d = b;  //กำหนดให้ค่าของ d เท่ากับ b
  }
  void add(int x) {  //สร้างฟังก์ชั่นที่ใช้ในการเพิ่มค่าของจำนวนเต็มกับเศษส่วน โดยมี parameter
    this.n = this.d*x+this.n; 
  }
  String tostring() {  //กำหนดรูปแบบของฟังก์ชั่นสำหรับการแสดงค่าของเศษส่วน
    return this.n+"/"+this.d;  //คืนค่าของเศษส่วนเป็นจำนวนเต็ม
  }
  boolean eq(fraction k) {  //ใช้ในการเทียบค่าว่าเป็น true หรือ false
    int p1 = k.n*this.d;  //กำหนดตัวแปรจำนวนเต็ม
    int p2 = k.d*this.n;
    if (p1 == p2) {  //กำหนดเงื่อนไขว่า p1 เท่ากับ p2 หรือไม่
      return true;  //คืนค่าเป็นจริง
    }
    else {  //กำหนดเงื่อนไขอีกหนึ่งเงื่อนไข
      return false ;  //คืนค่าเป็นเท็จ
    }
  }
  void over(fraction k) {  //ฟังก์ชั่นในการบวกค่าเศษส่วน
    int q1 = lcd(this.d, k.d);
    int q2 = q1/this.d;
    int q3 = q1/k.d;
    this.n = this.n*q2+k.n*q3;
    this.d = q1;
  }
}
int dawn;  //กำหนดจำนวนเต็ม
//ตัวหารร่วมมาก
int gcd(int x, int y) {  //กำหนดฟังก์ชั่นที่ใช้ในการคำนวณเศษส่วน
  if(x == 0) {  //กำหนดเงื่อนไข ถ้า X มีค่าเท่ากับ 0 ทำตามเงื่อนไขด้านล่าง
  dawn = y;
  }
  else if(y == 0) {  //กำหนดเงื่อนไขอีกกรณีหนึ่งว่า ถ้า Y เท่ากับ 0
  dawn = x;
  }
  else if(x>y) {  //กำหนดเงื่อนไขอีกกรณีที่ x>y
  gcd(y, x%y);
  }
  else if(x<=y){  //กำหนดเงื่อนไขถ้า x<=y
  gcd(x, y%x);
  }
  return dawn;  //คืนค่าของจำนวนเต็ม dawn
}
//ตัวคูณร่วมน้อย
int lcd(int x, int y) {  //กำหนดจำนวนเต็มสำหรับค่าของเศษส่วนด้วย parameter
  return x*y/gcd(x, y);   //คืนค่าเป็นค่า x*y หารด้วยค่าของ gcd
}

Canvas


ไม่มีความคิดเห็น:

แสดงความคิดเห็น