Problème de boucle while

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

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,

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

      Tchô!!
    2. Contributeur
      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,