2017-09-28 8 views
-1

Je suis très nouveau en C, et en travaillant sur un projet qui nécessite d'extraire une quantité indéterminée de valeurs de la console, je trouve qu'il ne tire pas les valeurs correctes. Cela ressemble à des adresses, ce qui, je crois, signifie que c'est un problème de pointeur, mais je n'arrive pas à le trouver.C ne lit pas correctement les valeurs de l'entrée

int getVals(int degree){ 

     double sum; 
     double x; 
     double coefs[degree]; 
     for(int counter = 0; counter<=degree; counter = counter+1){ 
       double nxt; 
       scanf(" %d", &nxt); 
       coefs[counter] = nxt; 
       printf("coefs[%d] = %d\n", counter, coefs[counter]); 

     } 
     printf(" x ? "); 
     scanf(" %d", &x); 
     printf("degree %d x %d\n", degree, x); 
     sum = poly(x, degree, coefs); 
       printf ("polynomial evaluate to: %lf\n", sum); 
     int newDegree; 
     scanf(" %d", &newDegree); 
     degree = newDegree; 
     if(degree>-1){ 
       getVals(degree); 
     } 
     else 
       return degree; 
} 

Note: poly renvoie un double résultat de la Je polynomial évalué recevoir la boucle infinie, après la saisie d'un degré de 1 et un coefficient de 1,5. Cela ne me permet pas d'entrer un x. Infinite loop

Répondre

2

Dans scanf(" %d", &newDegree);, vous devez utiliser le spécificateur de format "%lf" (puisque vos valeurs est un double, pas un int). Modifier le spécificateur de format dans tous vos appels à scanf() et "%f" dans les appels à printf().

Veuillez vous reporter à la documentation de ce lien printf(3), scanf(3).

+0

De plus, vous devriez probablement afficher le code de la fonction "poly". – Vinicius