L'utilité des pointeurs

Fermé
manutd1993 Messages postés 17 Date d'inscription dimanche 21 septembre 2014 Statut Membre Dernière intervention 5 octobre 2014 - 5 oct. 2014 à 16:30
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 5 oct. 2014 à 18:01
Bonjour

Voilà pour un exercice de cours j'ai créer une fonction qui simplifie une fraction dans laquelle j'ai utilisé un pointeur mais je ne comprend pas son utilité dans le code.

voici mon code :


void simplifierFraction(int *x, int *y) { // x correspond au numérateur et y au denominateur
    
   int div;
   
   for (div = 2; div <=*x && div <=*y; div++){       //initialise div à 2/condition= tant que div plus petit ou égal à *x et *y/incrémenter
        while((*x % div == 0) && (*y %div == 0)){    // les pointeurs sont le seul moyen de changer le contenu 
            *x = *x/div;                             // de variables déclarées dans d'autres fonctions.
            *y = *y/div;
        }
    }
}

void addition (int num1, int den1,int num2, int den2, int *x, int *y) {
   
    *x=(num1*den2)+(den1*num2);
    *y=(den2*den1);
    
    simplifierFraction(x,y);
    
}

void soustraction (int num1, int den1,int num2, int den2, int *x, int *y){
    
    *x=(num1*den2)-(den1*num2);
    *y=(den2*den1);
     
    simplifierFraction(x,y);
    
}

void multiplication (int num1, int den1,int num2, int den2, int *x, int *y){
    
    *x=(num1*num2);
    *y=(den1*den2);
    
    simplifierFraction(x,y);
}

void division (int num1, int den1,int num2, int den2, int *x, int *y){
    
    *x=(num1*den2);
    *y=(den1*num2);
    
    simplifierFraction(x,y);
}


int main(void)
{
     int num1, den1;
     int num2, den2;
     char op;
     int ret;
     int x, y;
     char demande = 'o';
     
     do{
     printf("Veuillez entrer votre calcul: \n");
     ret=scanf("%d/%d%c%d/%d",&num1, &den1,&op,&num2, &den2);
     buffer();
     
    
     if (ret == 5) {
           switch(op) {
               case '+':
                    addition(num1, den1, num2, den2,&x,&y);
                    break;
               case '-':
                    soustraction(num1, den1, num2, den2,&x,&y);
                    break;
               case '*':
                    multiplication(num1, den1, num2, den2,&x,&y);
                    break;
               case '/':
                    division(num1, den1, num2, den2,&x,&y);
                    break;
          }
           
     }
     
          printf("Result=%d/%d\n",x,y);
          
          printf("Voulez vous calculer de nouveau?\noui/non?");
          scanf("%c",&demande);
          buffer();
          
}while(demande=='o');
          
     return 0;
}

A voir également:

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 843
5 oct. 2014 à 18:01
0