Pb en c

Fermé
Aimery1 Messages postés 111 Date d'inscription dimanche 13 mars 2005 Statut Membre Dernière intervention 14 mars 2010 - 11 oct. 2008 à 15:10
oupsman Messages postés 316 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 22 octobre 2008 - 22 oct. 2008 à 11:12
Bonjour,
Je suis en train de construire pour un devoire un programme qui résoud les équations du second degré.

Or l'énnocé me demande de prévenir l'utilisateur lorsqu'il met a=0 dans ax²+bx+c=0. Donc voici le morceau de mon programme ou cela se trouve:

float a;
.
.
.
switch(x)
{
.
.
.
case 2:
printf("equation du second degres:\n\n");
do
{
printf("entrer a: ");
scanf("%f",&a);
}
while(a=0);
{
printf("\nentrer b: ");
scanf("%f",&b);
printf("\nentrer c: ");
scanf("%f",&c);
printf("\n equation: P(x)=%.2fx^2 + %.2fx + %.2f\n\n",a,b,c);
.
.
.
}

Or losque je compile puis éxécule le programme, il ne tien pas compte du do while càd que même si je met a=0, il va passer à la suite sans me redemander mon a.

voila qq pourai t-il m'aider. Merci

ps: j'utilise Dev c++ et ne peut programmer qu'en c.

5 réponses

Aimery1 Messages postés 111 Date d'inscription dimanche 13 mars 2005 Statut Membre Dernière intervention 14 mars 2010 11
21 oct. 2008 à 21:50
Merci ! je me suis rendu compte apres de al faute du ==
1
oupsman Messages postés 316 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 22 octobre 2008 10
22 oct. 2008 à 11:12
salut,

si ton problème est résolu, n'oublies pas de marquer statut "résolu"
à +
0
oupsman Messages postés 316 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 22 octobre 2008 10
11 oct. 2008 à 16:18
Salut,

il faut faire :

....
....
do
{
printf("entrer a: ");
scanf("%f",&a);
if(a==0) printf("\nAttention, la valeur de \"a\" doit etre different de zéro\n");
}
while(a==0);
....
....
-1
Yuku Messages postés 199 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 22 mars 2012 4
11 oct. 2008 à 16:22
Erreur de débutant très classique =P

Le fait de confondre, dans if par exemple, le x=0 et x==0.
-1
tatou_38 Messages postés 1928 Date d'inscription vendredi 21 avril 2006 Statut Membre Dernière intervention 5 août 2015 121
11 oct. 2008 à 23:48
Il eût été plus élégant d'écrire :

while (!a);


Mais en C, oublie les boucles do...while et sa copine du même style. Tu peux tout faire avec une boucle for( ; ; ).
-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
12 oct. 2008 à 03:51
Mais en C, oublie les boucles do...while et sa copine du même style. Tu peux tout faire avec une boucle for( ; ; ).

@tatou_38 : Ce que tu dis est très juste mais le For et le While n'ont pas le même usage. While devrait s'utiliser lorsque le nombre d'itérations n'est pas connu à l'avance tandis que For devrait s'utiliser lorsque le nombre d'itérations est connu à l'avance. Mais je conçois que le For soit bien plus pratique, d'ailleurs je l'utilise aussi avec des break quand ça simplifie mon code par rapport au While. Le Do While est effectivement déconseillé par les bonnes pratiques de la programmation structurée mais il est très pratique lorsqu'on veut utiliser correctement un While pour la saisie utilisateur et qu'on ne veut pas répéter le message de demande de saisie (car en programmation structurée on demande la saisie avant de rentrer dans la boucle et on la redemande ensuite dans la boucle et tout à la fin... c'est là que le Do While vient à la rescousse en lu disant ce qu'il doit faire avant même de poser la condition).
-1