Bug avec un programme en C !

Fermé
jittou Messages postés 14 Date d'inscription vendredi 12 octobre 2007 Statut Membre Dernière intervention 3 décembre 2007 - 8 nov. 2007 à 02:16
 gbe54 - 8 nov. 2007 à 07:39
Bonjour,
j'ai crée un programme de conversion de devise...j'ai posé 7 possibilités.en utilisant la boucle SWITCH avec les case.
mais lorsque j'écris par exemple 8 ça donne ce qui est après default ; même si j'ai déjà écris une boucle de while...le programme ne boucle pas.
je ne sais pas comment faire !!:s:s:s
voila c'est mon programme.. si il y a un truc qui ne va pas signalez le !!
merci d'avance....:)

#include <stdio.h>
#include <iostream.h>

using namespace std;

int main(void)
{
float dirham,dollar_us,dollar_can,euro,riyal,yen,dirham_eau,franc_suisse;
int nombre,a=0;
printf(" >>>>>>>>PROGRAMME DE CONVERSION DE DEVISE<<<<<<<<\n");
printf(" 1 =Dirham/dollar USA 4 =Dirham/dollar CANADA\n");
printf(" 2 =Dirham/Euro 5 =Dirham/Riyal Saoudien\n");
printf(" 3 =Dirham/Yen JAPON 6 =Dirham/Dirham EAU\n");
printf(" 7 =Dirham/Franc Suisse\n");
printf("veuillez saisir le nombre qui vaut a la convertion souhaitee : ");
cin>>nombre;
while(nombre=0){
printf("!!le nombre 0 nest pas figure dans la liste !!\n");
printf("veuillez saisir le nombre qui vaut a la convertion souhaitee : ");
cin>>nombre;}
while(nombre>7){
printf("!!le nombre %d",nombre,"nest pas figure dans la liste!!\n");
printf("veillez saisir le nombre qui vaut a la convertion souhaitee : ");
cin>>nombre;}
switch (nombre+a) {
case 1 :
printf("veuillez entrer la some en dirham : ");
cin>>dirham;
dollar_us=(float)0.122*dirham;
printf("la some en dollar USA est : %.3f \n",dollar_us);
break;
case 2 :
printf("veuillez entrer la some en dirham : ");
cin>>dirham;
euro=(float)0.089*dirham;
printf("la some en Euro est : %.3f \n",euro);
break;
case 3 :
printf("veuillez entrer la some en dirham : ");
cin>>dirham;
yen=(float)14.128*dirham;
printf("la some en Yen JAPON est :%.3f \n",yen);
break;
case 4 :
printf("veuillez entrer la some en dirham : ");
cin>>dirham;
dollar_can=(float)0.128*dirham;
printf("la some en Dollar CANADA est :%.3f \n",dollar_can);
break;
case 5 :
printf("veuillez entrer la some en dirham : ");
cin>>dirham;
riyal=(float)0.459*dirham;
printf("la some en Riyal Saoudien est :%.3f \n",riyal);
break;
case 6 :
printf("veuillez entrer la some en dirham : ");
cin>>dirham;
dirham_eau=(float)0.450*dirham;
printf("la some en Dirham EAU est :%.3f \n",dirham_eau);
break;
case 7 :
printf("veuillez entrer la some en dirham : ");
cin>>dirham;
franc_suisse=(float)0.147*dirham;
printf("la some en Franc Suisse est :%.3f \n",franc_suisse);
break;
default:
printf("le nombre ne figure pas dans la liste\n");
}
system("PAUSE");
}
A voir également:

1 réponse

Bonjour,

C'est une erreur bien classique et sur laquelle des générations de développeurs ont planché des heures ;-)
while (nombre == 0)

while (nombre=0) affecte 0 à nombre et retourne faux donc ça ne boucle pas CQFD.

Cdt
0