Pb en c
Aimery1
Messages postés
111
Date d'inscription
Statut
Membre
Dernière intervention
-
oupsman Messages postés 316 Date d'inscription Statut Membre Dernière intervention -
oupsman Messages postés 316 Date d'inscription Statut Membre Dernière intervention -
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.
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
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);
....
....
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);
....
....
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( ; ; ).
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( ; ; ).
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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).
@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).
si ton problème est résolu, n'oublies pas de marquer statut "résolu"
à +