2014-05-17 7 views
2

저는 여기에 열심히 노력하고 있습니다. (몇 시간 동안이 일을 해왔으며 어디에서나 ...). 좋아요, 그래서 제 문제는 typedef를 사용하여 간단한 부분을 반환하는 함수를 만드는 방법을 알 수 없다는 것입니다.재귀 함수 구조체 분수 단순화

int gcd(int a, int b) 
{ 
    int rem; 

    if ((rem = a % b) == 0) { 
     return b; 
    } 
    else { 
     return gcd(b, rem); 
    } 
} 

를 그리고 단순히 같은 뭔가 : 다른 말로이 같은 GCD를 얻을 수 유클리드 방법을 사용하려면 나는 형식 정의라는 부분으로 만들려고 노력하고,

int result = gcd(num, den); 
int simple_num = num/result; 
int simple_den = den/result; 
printf("%d/%d", simple_num, simple_den); 

을하지만, 및 내 단순화 된 분자 및 분모를 반환하는 함수 하나를 사용하십시오.

typedef struct 
{ 
    int numerator; 
    int denominator; 
} Fraction; 

Fraction simplify(Fraction myFraction) 
{ 
    return myFraction; 
} 

누구든지이 작업을 수행 할 수 있습니다.

+0

'gcd'를? – nemo

+0

그래, 그런 식으로 생각했지만 한 가지 기능으로 gcd를 사용하지 않고 모든 것을 시도하려고하지만 ... 오히려 그와 같은 다른 방법이 있습니다. 지금까지는 재귀 함수를 사용하지 않고 gdc의 정확성을 사용하여 무언가를 작성할 수 없었습니다. –

+0

GCD는 간단한 루프로 구현 될 수 있습니다. 'rem = a % b;'를 계산 한 후'a = b;'와'b = rem;'을 설정하고'rem == 0'까지 루핑을 계속한다. – user3386109

답변

2

이 작동합니다 :

당신은`Fraction` 유형`mod`,`div`와`equals`를 구현하고 사용할 수
Fraction simplify(Fraction myFraction) 
{ 
    int result = gcd(myFraction.numerator, myFraction.denominator); 
    int simple_num = num/result; 
    int simple_den = den/result; 
    Fraction newFraction = {simple_num, simple_den}; 
    return newFraction; 
}