Forums Rue-Montgallet.com
Rue-Montgallet.comRue-Hardware.comRue-Occasion.comRue-DVD.comRue-Jeuxvideo.comRue-AudioVideo.comRue-Telephone.comForums
S'inscrire | S'identifier |
| Recherche avancée | Aide
 
 

Il y a 64 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

Urgent warnings!

 
n°6886
Goldberg
Profil : Jeune recrue
Posté le 26-02-2004 à 21:20:28  profilanswer
 

J'ai ces deux warning qui apparaissent...d'où viennent-ils?
I:\C\bin>gcc --std=c99 -Wall -W --pedantic maite.c -o maite.exe
maite.c: In function `Estpremier':
maite.c:68: warning: control reaches end of non-void function
maite.c: In function `main':
maite.c:125: warning: int format, different type arg (arg 2)
 
 
 

Code :
  1. /**  
  2.    *   Solution for the exercise number 4 : Decomposition.  
  3.    *   This code is ISO-C99 compliant.  
  4.    **/
  5. #include <stdio.h>
  6. void PrintDescription(void)
  7.  
  8.   /**  
  9.    *   Affiche des informations concernant la fonction decomposition   
  10.    *   sur la sortie standard.   
  11.    **/
  12.  
  13.   {
  14.      printf("\n" );
  15.    
  16.      printf( "******************************************************\n" );
  17.    
  18.      printf( "* Decomposition by Vincent Roloux :                  *\n" );
  19.    
  20.      printf( "******************************************************\n" );
  21.    
  22.      printf( "* This method allows to obtain the decomposition     *\n" );
  23.    
  24.      printf( "* on prime factors of a number between 2 and n.      *\n" );
  25.    
  26.      printf( "******************************************************\n" );
  27.    
  28.   } 
  29. int Estpremier(int b)
  30.   /**
  31.    *   Fonction qui retourne la valeur entree si et seulement si
  32.    *   cette valeur (b) est premiere, dans le cas contraire la  
  33.    *   fonction teste la valeur suivante (b+1), etc
  34.    **/
  35.  
  36.   {
  37.      int i,r,a;
  38.    
  39.      if (b==1)
  40.        a=0;                            // 1 n'est pas premier
  41.      else if (b==2)
  42.        a=2;                            // 2 est premier
  43.      else {
  44.        i=2;
  45.        r=b%i;                          // on divise b par toutes les valeurs
  46.        while (r!=0 && i*i<b) {         // i comprises entre 2 et la racine                     
  47.          i++;                          // carree de b
  48.          r=b%i;             
  49.        }
  50.        if (r==0)
  51.          a=0;                          // si le reste==0, b n'est pas premier
  52.        else
  53.          a=b;                          // si reste!=0, b est premier
  54.      }
  55.    
  56.      if (a!=0)
  57.        return a;                       // on retourne a si b est premier
  58.      else
  59.        b++;                            // autrement on augmente la valeur de b
  60.                                        // d'une unité
  61.   }
  62. void decomposition(int n)
  63.   /**
  64.    *   Fonction qui divise le nombre n par des valeurs premieres (retournees  
  65.    *   par la fonction Estpremier) : on regarde combien de fois la valeur
  66.    *   première divise n, qd la division n'est plus possible, on passe
  67.    *   a la valeur b suivante.
  68.    **/
  69.   {
  70.      int b,value,j;
  71.    
  72.      for(b=2;b<=n;b++) {
  73.        j=0;
  74.      
  75.        value=Estpremier(b);            // on donne a value la valeur retournee   
  76.                                        // par la fonction Estpremier
  77.        while (n%Estpremier(b)==0) {    // on divise n par cette valeur
  78.          n=n/Estpremier(b);
  79.          j++ ;                         // a chaque fois que l'on a pu diviser
  80.        }                               // n par la valeur, on augmente j de
  81.                                        // 1 unite  
  82.        if (j!=0) {
  83.          if (j==1)
  84.            printf("%d",Estpremier(b));      // si le nbre entre est premier
  85.          else
  86.            printf("%d^%d",Estpremier(b),j); // on affiche value ^ j
  87.          if (n!=1)
  88.            printf("*" );                     // si n!=1 on affiche le * et on   
  89.        }                                    // passe au b suivant
  90.        
  91.       }
  92.    
  93.      printf("\n" );
  94.   }
  95. int main(void)
  96.   {
  97.     int n, a;
  98.    
  99.     char choix;
  100.    
  101.     PrintDescription();
  102.    
  103.     while (1) {
  104.       printf("\nEnter 1 if you want to perform the decomposition." );
  105.       printf("\nEnter 2 if you want to exit.\n" );
  106.       printf("\nYour choice = ? " );           // Ns proposons deux choix  
  107.                                               // 1) decomposition  
  108.                                               // 2) sortir du programme  
  109.       a = scanf("%d", &choix);
  110.       if (a != 1) {
  111.         printf("\nVous n'avez pas rentre un nombre !\n" ); // Si la valeur est
  112.         return -1;                                      // un caractère
  113.       }
  114.       else if ((choix!=1) & (choix!=2)) {
  115.         printf("\nIntroduce 1 or 2 please\n" );
  116.       };
  117.       switch(choix) {
  118.        
  119.         case 1 :
  120.           do {
  121.             printf("\nEnter the number n :\n" );
  122.             scanf("%d",&n);
  123.             if (n<2) {
  124.               printf("\nWhat is the interest to decompose on prime factors a number <2?" );
  125.             }
  126.             else
  127.               printf("\nThe decompostion of %d on prime factors is :\n",n);
  128.               decomposition(n);
  129.               do {
  130.                 printf("\n\nDo you want to try again?\n" );
  131.                 printf("\nPress y if yes or n if no :\n" );
  132.                 scanf(" %c",&choix);
  133.               } while (choix!='y' && choix!='n' && choix!='N' && choix!='Y');
  134.            } while (choix!='n'&& choix!='N');
  135.        
  136.         case 2 :
  137.           printf("\n" );
  138.           printf("Good bye, have a nice day.\n" );
  139.           return 0;
  140.       }
  141.     }           
  142. }


 

n°6887
lukefab
meuh
Profil : Habitué
Posté le 26-02-2004 à 22:27:26  profilanswer
 

avec les numéros de ligne ça serait mieux.
Pour la première, tu ne retournes pas de valeur si le dernier test est faux (dernière ligne de cette fonction).
pour la deuxième, remplace %d par %c

n°6888
Goldberg
Profil : Jeune recrue
Posté le 26-02-2004 à 23:43:57  profilanswer
 

oui effectivement je ne souhaite retourner de valeur que si a!=0..ds le cas contraire je refais le test avec b=b+1 jusqu'à ce que j'arrive à un a!=0
 
mais comment ne plus avoir ce warning alors?

n°6892
lukefab
meuh
Profil : Habitué
Posté le 27-02-2004 à 08:44:29  profilanswer
 

ben tu fais une boucle...

n°6897
Goldberg
Profil : Jeune recrue
Posté le 27-02-2004 à 11:13:47  profilanswer
 

oui c juste  
merci bcp!!!!


Aller à :
Ajouter une réponse