2016-08-23 2 views
-2

Comme le dit le titre, je suis en train de créer un programme pour trouver le GCD d'une fraction. Le programme a une fonction qui le trouve, mais j'ai eu quelques problèmes.Utilisation de structures pour trouver le GCD d'une fraction (programme Simple C)

Je veux que la fonction accepte deux variables de structure (dénominateur et numérateur) et renvoie le GCD (entier)

Voici mon code:

#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 
} 

Je reçois les erreurs suivantes:

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); 

Toute aide serait appréciée.

+3

'find_gcd' prend des structures, mais vous le transmettre' int's ... Lire l'erreur! Il l'imprime pour * vous *. –

+1

Comment êtes-vous supposé faire la différence entre le premier et le deuxième paramètre s'ils sont tous les deux nommés 's1'? –

+0

Merci, je me sens comme un idiot. – tadm123

Répondre

0

dans la signature de la fonction, les deux paramètres sont nommés s1

Fix, peut-être en renommant l'un des paramètres à s2