2014-05-20 3 views
-1

J'ai compris le reste du programme et je n'ai pas d'erreurs/avertissements mais maintenant mon problème est que je reçois la mauvaise réponse de l'entrée, mais je ne sais pas pourquoi.C programme pour résoudre polynômes problème

Code pertinent:

int x; 
float h; 
printf("Enter a number:"); 
scanf("%d", &x); 
h= (3x+2)/(2x-4); 
printf("The answer is: %.2f \n", h); 

Il me donne un chiffre qui est arrondi. Par exemple, si j'entre 5, il retournera 2.00 alors qu'il devrait retourner 2.83.

Aidez s'il vous plaît!

Edit: Je suis désolé, je suis un peu fatigué. J'ai écrit mon équation pour h comme:

h= (3*x+2)/(2*x-4); 
+3

est '' 3x' et 2x' une faute de frappe ou voulez-vous dire '2 * x'? –

+0

'h = (3 * x + 2.0f)/(2 * x-4);' – BLUEPIXY

+0

Oui c'est. Je suis désolé, j'ai fait l'édition. Essayer maintenant. Merci à tous pour votre aide! –

Répondre

3

Ce code C n'est pas valide. Vous ne pouvez pas utiliser la multiplication implicite (3x doit être 3 * x et ainsi de suite).

Si vous corrigez cela, vous devez effectuer l'arithmétique dans float pour obtenir une meilleure précision. Le plus simple est de simplement faire l'un des littéraux float:

const float h = (3.f * x + 2)/(2 * x - 4); 

devrait le faire.

+0

Pour une raison quelconque, cela m'a donné une erreur, donc je suis sûr que je ne le place pas dans la bonne zone. J'ai utilisé la solution d'un autre poster et cela fonctionne maintenant mais merci beaucoup pour l'aide. Je l'apprécie vraiment. Edit: J'aimerais pouvoir publier le code entier mais je pense que je pourrais violer quelque chose si je le fais. –

0

Ceci est dû à la conversion implicite. Les variables h sont de type float. Mais l'opérateur/voit deux entiers qu'il doit diviser et renvoie donc un entier dans le résultat qui est implicitement converti en un float. Si vous voulez flotter divisions, essayez de faire les deux opérandes au/flotteurs

float x; 
float h; 
printf("Enter a number:"); 
scanf("%f", &x); 
h= (3*x+2)/(2*x-4); 
printf("The answer is: %.2f \n", h); 

OU

int x; 
float h; 
printf("Enter a number:"); 
scanf("%d", &x); 
h= ((float)3*x+2)/((float)2*x-4); 
printf("The answer is: %.2f \n", h);