Fraction For KorRoNor And HorRoMor
นี่เป็นการสร้างฟังก์ชั่นสำหรับใช้ในการสร้างเศษส่วน
ต้องมีการกำหนดเงื่อนไขหลายแบบ และเขียนฟังก์ชั่นเฉพาะการสร้างเศษส่วน รวมทั้งกำหนดตัวแปรในการสร้างเศษส่วน
นอกจากนี้ผมได้ออกแบบการสร้างเศษส่วนเฉพาะการหา ห.ร.ม และ ค.ร.น ซึ่งทั้งสองอย่างนี้มีรูปแบบเฉพาะในการเขียนฟังก์ชั่นเพื่อการคำนวณ
สำหรับการกำหนดตัวแปรในการสร้างเศษส่วน
สามารถกำหนดตัวแปรให้มีค่าเป็นจำนวนเต็มอะไรก็ได้
ส่วนใหญ่เรามักกำหนดการทำงานของฟังก์ชั่นชนิดนี้ไว้ใน setup แต่ต้องมีการกำหนด
class และฟังก์ชั่นสำหรับการทำงานไว้ก่อน และถ้าเป็นไปได้
ควรให้โปรแกรมแสดงผลลัพธ์ออกมาให้เห็นเพื่อความแน่ใจ อันดับแรกควรเขียน 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)
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
}
ไม่มีความคิดเห็น:
แสดงความคิดเห็น