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; }
A voir également:
- Boucle for et conditionnelle if en c++
- Mise en forme conditionnelle excel - Guide
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Excel liste déroulante conditionnelle - Guide
- Idm for mac - Télécharger - Téléchargement & Transfert
- Instagram for pc - Télécharger - Divers Communication
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'utiliser
- pour les types de bases (
- personnellement je trouve que
- généralement les gens utilisent plutôt
Passons maintenant au problème
- À la fin de ton programme
- 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 avec
Maintenant que
... puis
Bonne chance
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'utiliser
namespace std;ou du moins garde à l'esprit que dans un header, il faudra savoir t'en passer. Ici un
using std::cout;dans ton
main()serait bien plus propre.
- pour les types de bases (
int,
bool...) tu peux initialiser comme tu l'aurais fait en C (par exemple
int x = 7).
- personnellement je trouve que
size_tou
unsigned intest mieux que
intsi tu ne manipules que des entiers positifs.
- généralement les gens utilisent plutôt
&&ou
!, au lieu de
andet
notmême s'ils existent en C++
Passons maintenant au problème
- À la fin de ton programme
p == met
p == 10et c'est pour cela que le dernier chiffre écrit est
0. 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 avec
gdb:
g++ -g toto.c -o titi
gdb titi
Maintenant que
gdbest lancé :
b main
r
... puis
npour avancer d'une instruction,
p totopour afficher la valeur de toto ; tu peux appuyer sur entrée pour répéter la dernière instruction gdb.
Bonne chance