Problème de boucle while

pyr -  
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous,
je voudrais savoir si quelqu'un voit pourquoi ma boucle ne fonctionne pas...
Voilà, lerci d'avance.



int main(){
int again,c,n,S[200][200];

again=0;

while (again=0){

c=0;

printf("\n Que voulez'vous faire?");
printf("\n Tapez 1 pour afficher un sapin non décoré et dont vous choisissez la taille.");
printf("\n Tapez 2 pour afficher un sapin non décoré et la taille est aléatoire.");
printf("\n Tapez 3 pour afficher un sapin décoré et dont vous choisissez la taille");
printf("\n Tapez 4 pour afficher un sapin décoré et la taille est aléatoire.");
printf("\n Tapez 5 pour quitter.");

printf("\n\n\t");

scanf("%d",&c);

printf("\n");

switch(c){
case 1: {printf("\n Quelle est la taille de votre sapin? (en nombre de branche)\n\n ");
scanf("%d",&n);
isnd(S,n);
asnd(S,n);}
break;

case 2: {n=rand()%(35-1)+1;
isnd(S,n);
asnd(S,n);}
break;

case 3: {printf("\n Quelle est la taille de votre sapin? (en nombre de branche)\n\n ");
scanf("%d",&n);
isd(S,n);
asd(S,n);}
break;

case 4: {n=rand()%(35-1)+1;
isd(S,n);
asd(S,n);}
break;

case 5: again=1;
break;

default: printf("La valeur entrée est incorrecte.");
break;
}

printf("\n");}

printf("et merde");

return 0;}

1 réponse

Pedro
 
Bonjour,

Je dirais qu'il faut mettre == au lieu de =
2
pyr
 
Merci beaucoup Pedro, cela fonctionne. Je comprend pas trop quelle est la différence mais c'est pas grave.

Tchô!!
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Bonjour,
Lorsque tu souhaites utiliser la comparaison (si une variable est égal à, tant que c'est égal à, etc.), il faut utiliser ==. Lorsque tu souhaites affecter une valeur à une variable, il faut utiliser =.
Dans ton cas, tu mettais : while (again=0){. Le compilateur comprendra :
int again=0;
while(again) {
   again=0;
}

Comme 0 correspond à false, la boucle ne sera jamais parcourue.

J'espère que tu y vois plus clair maintenant.

Cdlt,
0