2016-08-23 6 views
-2

タイトルが言うように、私は分数のGCDを見つけるプログラムを作っています。プログラムにはそれを見つける機能がありますが、いくつかの問題が発生しました。構造を使って分数のGCDを見つける(シンプルなCプログラム)

私は関数は、2つの構造体変数(分母と分子を)受け入れるようにしたいと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'は構造を取っているが、あなたはそれを渡している、ということs1

修正を命名されていますint's ...エラーを読む! *あなたのために印刷しています。 –

+1

もし両方が 's1'という名前であれば、第1のパラメータと第2のパラメータを区別すると思いますか? –

+0

ありがとう、私は馬鹿のように感じる。 – tadm123

答えて

関連する問題