voici l'énoncer d'un exercice que j'ai trouvé sur Google et j'ai essayer de le résoudre sauf que j'obtiens une boucle infini en compilant le code que j'ai écris.S'il vous plait comment puis-je arranger cela? Merci d'avance !
<<Demander à l’utilisateur combien font 2 fois 2 et répéter cette question aussi longtemps que la réponse est fausse.
Ajouter le message "Faux, recommencez" à chaque fausse réponse, et "Bravo !" pour la bonne réponse.>>
#include <stdio.h>
int main()
{
int nombre =2;int resultat =0;
printf("combien font 2*2? : ");
scanf("%d",&resultat);
while(resultat != 4)
{
printf("combien font 2*2? \n");
printf("Faux, recommencer");
}
if (resultat = 4)
{
printf("bravo\n");
}
return 0
}
1) Pour la boucle while la valeur de résultat n'est jamais modifiée dans le corps de la boucle donc si elle est différente de 4 ça tourne indéfiniment.
2) Le test d'égalité c'est == et non pas =
3) Il manque le point virgule à la fin de la ligne 17
1) Pour la boucle while la valeur de résultat n'est jamais modifiée dans le corps de la boucle donc si elle est différente de 4 ça tourne indéfiniment.
2) Le test d'égalité c'est == et non pas =
3) Il manque le point virgule à la fin de la ligne 17
Je me disais que printf("bravo") n'est pas dans la boucle while vu que j'avais fermé les accolades qui définissaient les instructions de la boucle.
{
printf("combien font 2*2? \n");
printf("Faux, recommencer");
}
qu'est ce qui se passe si on les répète ?
Pour if (resultat = 4), il y a des subtilités de C qui rentrent en compte
resultat = 4 n'est pas une comparaison, mais est une affectation, qui met la valeur 4 dans la variable resultat
une affectation est aussi une expression qui retourne une valeur, la valeur affectée à la variable. Donc 4 ici.
un if prend comme paramètre une expression à résultat scalaire : entier (dont caractere), flottant ou pointeur. Cette expression est considérée comme vraie quand elle est différente de zero ou de NULL.
et conclusion, le corps du if sera toujours exécuté en sortant de la boucle. Si on en sort un jour.
Et surtout : on n'essaie pas de faire faire ses exercices par les participants d'un forum, en prétendant qu'on s'est mis à essayer après les avoir trouvés sur google comme ça par hasard.
On veut bien aider à apprendre à programmer, et justement, donner les solutions, ça n'aide pas à apprendre, au contraire même ça empêche/
- Edité par michelbillaud 3 février 2025 à 17:44:42
Et surtout : on n'essaie pas de faire faire ses exercices par les participants d'un forum, en prétendant qu'on s'est mis à essayer après les avoir trouvés sur google comme ca par hasard.
On veut bien aider à apprendre à programmer, et justement, donner les solutions, ça n'aide pas à apprendre, au contraire.
- Edité par michelbillaud il y a environ 8 heures
J'apprend à programmer en suivant les cours sur openclassroom.C'est vraiment un exercice que j'ai trouvé sur google pour m'exercer et non un exercice donné par un professeur .Et vous avez raison je dois apprendre à trouver des solutions par moi même.
Parce qu'on a donné des éléments pour avancer vers une solution, on voudrait bien savoir comment ils ont été pris en compte, et si il y a besoin de corrections/explications supplémentaires.
- Edité par michelbillaud 3 février 2025 à 17:54:55
Parce qu'on a donné des éléments pour avancer vers une solution, on voudrait bien savoir comment ils ont été pris en compte, et si il y a besoin de corrections/explications supplémentaires.
- Edité par michelbillaud il y a 3 minutes
#include <stdio.h>
int main()
{ int resultat =0;
while (resultat !=4)
{
printf("combien font 2*2? :");
scanf("%d",&resultat);
if (resultat != 4)
{
printf("Faux,recommencer");
}
}
printf("bravo");
returm o;
}
J'ai pu trouver une soulution
- Edité par PierretteLafortuneVoufo 5 février 2025 à 13:11:32
Le crayon la gomme et le papier sont les meilleurs outils du programmeur !