#include #include typedef struct{ int numerateur; int denominateur; }rationnel; /* Le (typedef) permet de définir un nouveau type, le nouveau type est une structure (struct) composée de deux champs */ // -- Déclaration & définition de la fonction pgcd --- long pgcd(long x, long y){ // Le type long représente un entier long c.-à-d. sa limite est supérieure de celle d'un entier (int) long r; while (y > 0) { r=x % y; if(r==0) return y; x=y; y=r; } return x; } // -- Déclaration & définition de la fonction avec comme type de retour rationnel --- rationnel simplifier(rationnel R){ rationnel S; int P; P=pgcd(R.numerateur, R.denominateur); S.numerateur=R.numerateur/P; S.denominateur=R.denominateur/P; return S; } // -- Déclaration & définition de la procédure --- void add_R(rationnel R1, rationnel R2, rationnel *R){ int a=R1.numerateur,b=R1.denominateur,c=R2.numerateur,d=R2.denominateur; (*R).numerateur=a*d+b*c; (*R).denominateur=b*d; (*R)=simplifier((*R)); } int main(){ rationnel R1, R2, R; printf("Veuillez saisir les coordonnes du 1er nombre rationnel : \n"); printf("\t numerateur : "); scanf("%d", &R1.numerateur); printf("\t denominateur : "); scanf("%d", &R1.denominateur); printf("\t R1 = %d / %d \n", R1.numerateur, R1.denominateur); printf("Veuillez saisir les coordonnes du 2eme nombre rationnel : \n"); printf("\t numerateur : "); scanf("%d", &R2.numerateur); printf("\t denominateur : "); scanf("%d", &R2.denominateur); printf("\t R2 = %d / %d \n", R2.numerateur, R2.denominateur); printf("\n----------------------------------------------------------\n"); R1=simplifier(R1); printf("\t R1 = %d / %d", R1.numerateur, R1.denominateur); R2=simplifier(R2); printf("\t R2 = %d / %d", R2.numerateur, R2.denominateur); printf("\n----------------------------------------------------------\n"); add_R(R1,R2,&R); printf("\t R1+R2= %d / %d \n", R.numerateur, R.denominateur); return 0; }