2016-08-23 45 views
-2

正如標題所說,我正在制定一個程序來查找分數的GCD。該程序有一個功能,可以找到它,但我遇到了一些問題。使用結構來查找分數的GCD(簡單C程序)

我希望函數接受兩個結構變量(分母和分子),並返回GCD(整數)

這裏是我的代碼:

#include <stdio.h> 


struct fraction{ 
    int numerator,denominator; 
}; 

int find_gcd(struct fraction s1, struct fraction s1); 

int main(void) 
{ 
    struct fraction d1; 
    int gcd; 

    d1.numerator= 20; 
    d1.denominator= 100; 

    printf("Fraction: %d/%d\n",d1.numerator,d1.denominator); 

    gcd= find_gcd(d1.numerator, d1.denominator); 

    printf("In lowest terms: %d/%d",d1.numerator/gcd,d1.denominator/gcd); 
} 

int find_gcd(struct fraction s1, struct fraction s1) 
{ 
    int remainder=0; 

    while (s1.denominator !=0) 
    { 
     remainder = s1.numerator/s1.denominator; 
     s1.numerator= s1.denominator; 
     s1.denominator= remainder; 
    } 

    return s1.numerator;  //this is the gcd 
} 

我收到以下錯誤:

GCD_structures.c:8:50: error: redefinition of parameter 's1' 
int find_gcd(struct fraction s1, struct fraction s1); 
               ^
GCD_structures.c:8:30: note: previous definition of 's1' was here 
int find_gcd(struct fraction s1, struct fraction s1); 
          ^
GCD_structures.c: In function 'main': 
GCD_structures.c:20:10: error: incompatible type for argument 1 of 'find_gcd' 
    gcd= find_gcd(d1.numerator, d1.denominator); 

任何幫助,將不勝感激。

在函數的簽名
+3

'find_gcd'正在採取的結構,但你傳遞' int's ...閱讀錯誤!它正在打印* *你*。 –

+1

你認爲如果第一個參數和第二個參數都被命名爲's1',你認爲如何區分? –

+0

謝謝,我覺得自己像個白癡。 – tadm123

回答

0

,雙方的參數被命名爲s1

解決這個問題,或許通過重命名參數之一s2