Boucle for et conditionnelle if en c++
Résolu
Bonjour,
l'exercice suivant m'est demandé pour moi il devrait afficher 577891 mais il affiche 577890 pourquoi
quand la boucle for arrive à la valeur m =9 elle l'exécute et cela donne 9 puis s'arrête car m doit être inférieur à n et non pas inférieur ou égal
et ensuite on fait le if du bas qui doit exécuter p-m =1 et non pas 0
quelqu'un peut il encore m'aider
cordialement
l'exercice suivant m'est demandé pour moi il devrait afficher 577891 mais il affiche 577890 pourquoi
quand la boucle for arrive à la valeur m =9 elle l'exécute et cela donne 9 puis s'arrête car m doit être inférieur à n et non pas inférieur ou égal
et ensuite on fait le if du bas qui doit exécuter p-m =1 et non pas 0
quelqu'un peut il encore m'aider
cordialement
#include <iostream>
using namespace std;
int main() {
int m;
int p(10);
int n(10);
bool test(false);
for ( m = n / 2; m < n ; ++m) {
if (test and ((m + n) % 2 == 0)) {
cout << m + 1 << " ";
} else {
cout << m << " ";
test = not test;
}
}
if (m > p) {
cout << m + p << " ";
} else {
cout << p - m << " ";
}
return 0;
}
1 réponse
-
Bonjour,
Quelques conseils préalables
- indente ton programme correctement
- merci d'utiliser les balises de code (4e bouton au dessus de la boite dans laquelle tu tapes ton message), ça t'aurait d'ailleurs permis d'écrire ton texte en indiquant les numéros de lignes en modifiant ton texte une fois le rendu fait.
- évite d'utilisernamespace std;
ou du moins garde à l'esprit que dans un header, il faudra savoir t'en passer. Ici unusing std::cout;
dans tonmain()
serait bien plus propre.
- pour les types de bases (int
,bool
...) tu peux initialiser comme tu l'aurais fait en C (par exempleint x = 7
).
- personnellement je trouve quesize_t
ouunsigned int
est mieux queint
si tu ne manipules que des entiers positifs.
- généralement les gens utilisent plutôt&&
ou!
, au lieu deand
etnot
même s'ils existent en C++
Passons maintenant au problème
- À la fin de ton programmep == m
etp == 10
et c'est pour cela que le dernier chiffre écrit est0
. Je ne sais pas si ça répond à ta question.
- Si tu veux plus de détails, le plus simple est de regarder le comportement de ton programme avec un debogueu. Puis en exécutant ton programme pas à pas en regardant les valeurs de tes variables, tu devrais arriver à comprendre ce qui ne va pas (n'ayant pas l'énoncé, c'est compliqué pour moi de t'en dire plus !).
Par exemple, si tu es sous linux tu peux déboguer avecgdb
:g++ -g toto.c -o titi
gdb titi
Maintenant quegdb
est lancé :b main
r
... puisn
pour avancer d'une instruction,p toto
pour afficher la valeur de toto ; tu peux appuyer sur entrée pour répéter la dernière instruction gdb.
Bonne chance