//상태로써 분자와 분모값을 가지고 있음

//기능으로써 다른 Fraction객체와의 사칙연산 기능

//자기자신을 약분해서 기약분수로 만드는 기능


public class Fraction {


private int numerator;

private int denominator;

public Fraction(){

numerator = 0;

denominator = 1;

}

public int getNumerator() {

return numerator;

}

public void setNumerator(int numerator) {

this.numerator = numerator;

}

public int getDenominator() {

return denominator;

}

public void setDenominator(int denominator) {

this.denominator = denominator;

}

public Fraction(int numerator, int denominator) {

super();

this.numerator = numerator;

this.denominator = denominator;

}

public String toString() {

if(denominator < 0)

return -numerator + "/" + -denominator;

else

return numerator + "/" + denominator;

}


//약분 -> 분자와 분모의 최대공약수를 찾아서 두수를 각각 나눠버림

public void reduction(){

int gcd = getGCD(numerator, denominator);

numerator /= gcd;

denominator /= gcd;

}

private int getGCD(int x, int y){

while(y != 0){

int r = x % y;

x = y;

y = r;

}

return x;

}

//덧셈 -> 통분해서 분자끼리 합 

public Fraction add(Fraction f){

int newDenominator = denominator*f.getDenominator();

int newNumerator = numerator*f.getDenominator()

+ f.getDenominator()*denominator;

return new Fraction(newNumerator, newDenominator);

}

//뺄셈 -> 통분해서 분자끼리 뺌

public Fraction subtract(Fraction f){

int newDenominator = denominator*f.getDenominator();

int newNumerator = numerator*f.getDenominator()

- f.getDenominator()*denominator;

return new Fraction(newNumerator, newDenominator);

}

//곱셈 -> 분보끼리 분자끼리 곱

public Fraction mult(Fraction f){

int newDenominator = denominator*f.getDenominator();

int newNumerator = numerator*f.getNumerator();

return new Fraction(newNumerator, newDenominator);

}

//나눗셈 ->분자 = 분모*분자, 분모 = 분자*분모

public Fraction divide(Fraction f){

int newDenominator = denominator*f.getNumerator();

int newNumerator = numerator*f.getDenominator();

return new Fraction(newNumerator, newDenominator);

}

}





public class FractionTest {

public static void main(String[] args) {

Fraction f1 = new Fraction(25,30);

Fraction f2 = new Fraction(3,18);

Fraction f3 = f1.add(f2);

Fraction f4 = f1.subtract(f2);

Fraction f5 = f1.mult(f2);

Fraction f6 = f1.divide(f2);

f1.reduction();

f2.reduction();

f3.reduction();

f4.reduction();

f5.reduction();

f6.reduction();

System.out.println("f1값 : " + f1);

System.out.println("f2값 : " + f2);

System.out.println("덧셈값 : " + f3);

System.out.println("뺄셈값 : " + f4);

System.out.println("곱셈값 : " + f5);

System.out.println("나눗셈값 : " + f6);

}

}

' IOT 기반 응용 SW과정 > Review' 카테고리의 다른 글

三周整理考试  (0) 2016.04.04
套装  (0) 2016.04.04
确认问题  (1) 2016.03.25
排序  (0) 2016.03.23
反复文  (0) 2016.03.22

+ Recent posts