‘else’ sans précédent ‘if’

Je commence tout juste à apprendre la programmation en C, donc je ne suis pas vraiment à un niveau avancé. Ours avec moi!

J’ai ce code et je suppose qu’il est assez facile de comprendre ce que j’essaie de faire. Cependant, j’obtiens une erreur en disant que le dernier appel est appelé sans si avant.

Je soupçonne que le problème vient de ma déclaration if-else entre if et else. Comment allez-vous résoudre le problème?

int talet; scanf("%d", &talet); int i = 1; while (i <= 99) { int a; { if (i % talet == 0 || talet == (i / 10) % 10 || talet == i % 10) { if (talet % 10 == 0) printf("\n"); else continue; } printf("burr "); else printf("%d ", i); } i = i + 1; } 

Le problème est avec vos supports. Indenter est important pour comprendre où ouvrir et fermer vos crochets

 int talet; scanf("%d",&talet); int i=1; while(i<=99) { int a; if (i%talet==0 || talet==(i/10)%10 ||talet==i%10) { if (talet%10==0) printf("\n"); else continue; printf("burr "); } else { printf("%d ",i); } i=i+1; } 

Votre problème est ici:

 } printf("burr "); //<--- else printf("%d ",i); 

Vous ne pouvez avoir aucune déclaration avant le bloc else. Alors supprimez-le ou déplacez-le à l'intérieur du bloc else OU si, quelque chose comme ceci:

 } else { printf("burr "); printf("%d ",i); } 

Le problème est que vous avez un printf dehors des crochets if . Pour cette raison, le compilateur pense que l’instruction if est terminée. Quand il atteint l’ else , renvoie une erreur puisqu’il n’y a pas de condition ouverte if

Tu devrais avoir ça

 if (i%talet==0 || talet==(i/10)%10 ||talet==i%10) { if (talet%10==0) printf("\n"); else continue; printf("burr "); // <-- this was moved } else printf("%d ",i); 

essayez de garder vos blocs de code aussi propres et lisibles que possible. Cela vous évitera de faire des erreurs.

Vous pouvez écrire un style if else Horstmann:

 if (condition) { #statements } else { #statements } 

ou un peu plus compact dans le style TBS1:

 if (condition) { #statements } else { #statements } 

choisissez celui que vous aimez, plus de styles dans le commentaire fourni par crashmstr (merci à lui), et respectez-le. Cela améliorera la qualité de votre code.