Pb decimaux double C

Fermé
daxter - 10 déc. 2009 à 21:33
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 - 11 déc. 2009 à 19:19
Bonjour,
En ayant partiellement fait ce petit programme, je voudrais passer aux décimaux : remplacé int par double mais il y a 50 erreurs et je ne vois pas l'erreur alors qu'avec int, il n'y a pas de problème !

Mon code

#include <stdio.h>
#include <stdlib.h>
#include <math.h>


double main()
{
printf("Resoudre y = ax*x+bx+c= 0 ,pour a, b, c differents de 0\n\n");

double variableA = 0;
printf("Saisissez votre nombre a : ");
scanf("%d", &variableA);

double variableB = 0;
printf("Saisissez votre nombre b : ");
scanf("%d", &variableB); // Recupère variableB

double variableC = 0;
printf("Saisissez votre nombre c : ");
scanf("%d", &variableC); // Recupère variableC

double carreDeB = 0;
carreDeB = pow(variableB, 2);

double discriminant = 0;
discriminant = carreDeB - 4 * variableA * variableC;

if (discriminant == 0)
{

double racineDouble = 0;
racineDouble = (- variableB) / (2 * variableA);

double (racineDouble < 0)
{

double racineDoubleinf = 0;
racineDoubleinf = - racineDouble; // ptetre pas besoin ptetre direct meme dans print f


printf("\nLa seule solution est :\nx= %d et la factorisation du polynome est y = %d(x + %d)^2 \n\n\n\n\n\n", racineDouble, variableA, racineDoubleinf);
}

else
{

printf("\nLa seule solution est :\nx= %d et la factorisation du polynome est y = %d(x - %d)^2 \n\n\n\n\n\n", racineDouble, variableA, racineDouble);
}


}
else if (discriminant < 0)
{
printf("\nIl n'y a aucunes solutions !\n\n\n\n\n\n");

}
else if (discriminant > 0)
{

double racineDiscriminant = 0;
racineDiscriminant = sqrt(discriminant);

double premiereRacine = 0;
premiereRacine = (- variableB - racineDiscriminant) / (2 * variableA);

double deuxiemeRacine = 0;
deuxiemeRacine = (- variableB + racineDiscriminant) / (2 * variableA);

double (premiereRacine <= 0 && deuxiemeRacine <= 0)
{

double premiereRacineinf = 0;
premiereRacineinf = - premiereRacine;
double deuxiemeRacineinf = 0;
deuxiemeRacineinf = - deuxiemeRacine;
double facteurPoly = 0;
facteurPoly = 2 * variableA;

printf("\nLes solutions sont :\nx= %d ou x= %d et la factorisation du polynome est y = %d(x + %d)(x + %d)\n\n\n\n\n\n", premiereRacine, deuxiemeRacine, facteurPoly, premiereRacineinf, deuxiemeRacineinf);
}

else if (premiereRacine <= 0 && deuxiemeRacine >= 0)
{

double premiereRacineinf = 0;
premiereRacineinf = - premiereRacine;
double facteurPoly = 0;
facteurPoly = 2 * variableA;

printf("\nLes solutions sont :\nx= %d ou x= %d et la factorisation du polynome est y = %d(x + %d)(x - %d)\n\n\n\n\n\n", premiereRacine, deuxiemeRacine, facteurPoly, premiereRacineinf, deuxiemeRacine);
}

else if (premiereRacine >= 0 && deuxiemeRacine <= 0)
{

double deuxiemeRacineinf = 0;
deuxiemeRacineinf = - deuxiemeRacine;
double facteurPoly = 0;
facteurPoly = 2 * variableA;

printf("\nLes solutions sont :\nx= %d ou x= %d et la factorisation du polynome est y = %d(x - %d)(x + %d)\n\n\n\n\n\n", premiereRacine, deuxiemeRacine, facteurPoly, premiereRacine, deuxiemeRacineinf);
}

else if (premiereRacine >= 0 && deuxiemeRacine >= 0)
{

double facteurPoly = 0;
facteurPoly = 2 * variableA;

printf("\nLes solutions sont :\nx= %d ou x= %d et la factorisation du polynome est y = %d(x - %d)(x - %d)\n\n\n\n\n\n", premiereRacine, deuxiemeRacine, facteurPoly, premiereRacine, deuxiemeRacine);


}

else
{
printf("Vous avez choisit c = 0, erreur !"); // CONStRUCtiOn

}

}
else
{
printf("\nUne ou plusieures de vos trois valeurs ne sont pas des nombres differents de 0\n\n\n\n\n\n");

}

return 0;
}
A voir également:

2 réponses

OConell Messages postés 139 Date d'inscription samedi 1 novembre 2008 Statut Membre Dernière intervention 13 octobre 2010 8
10 déc. 2009 à 21:44
Bonsoir

Je pense que tu devrais chercher vers les %d des scanf et printf :
je te mets un lien trouvé rapidement sur google :
http://picolibre.int-evry.fr/projects/svn/coursc/Tex4Ht/Indexse22.html

au hasard vers la section "Tab. 4.1: Conversions usuelles de printf et scanf"


Bonne continuation
0
J'ai remplacé %f et %lf mais j'ai toujours 50 erreurs comme si "double" n'était pas reconnu.
0
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
11 déc. 2009 à 19:19
Heu, c'est surtout les '%d' qu'il faut transformer ! Et ça doit aller ! Si ce n'était pas le cas, il y a longtemps que cela se saurait !
Que dit précisément le compilateur ? Et quelle est la ligne correspondante ? Inutile de donner les 100 lignes de code puisque c'est toujours la même erreur.
Bonne continuation.
0