Probleme for

Résolu
Bill -  
Bimoil Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   -
Hi, je tente de faire cette algo.


x
xx
xxx
xxxx
xxxxx

J'ai tenter quelque chose, mes sa ne fonctionne pas.

for (int b(0); b < 5; b++)
{
for (int k(1); 1 > k; ++b)
{
cout << "*x ";
}
A voir également:

6 réponses

[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
Salut Bill,

Tu dois déboguer ton code.

Cela fait partie du processus normal de programmation.

Le premier problème que tu devrais tenter de corriger est le suivant : dans ta boucle imbriquée, tu fais dépendre la condition de sortie de la valeur de k, qui vaut initialement 1.
  • lors de la première itération de cette boucle la condition 1 > 1 est fausse, donc la boucle imbriquée for n'est pas exécutée (ce n'est sans doutes pas ce que tu recherches)
  • à aucun endroit de ton code tu ne changes la valeur de k, donc la boucle imbriquée for n'est de ce fait jamais exécutée (c'est du code mort ou inaccessible, qui ne sert à rien)


Une fois que tu auras résolu ces problèmes là, tu en verras d'autres. Identifie leurs causes et corriges les, et répète ce processus jusqu'à ce que le code fasse ce que tu attends.

Dal
0
Bill
 
Hi,
J'ai tenter de modifier mon code me sa ne fonctionne toujours pas, est ce qu'il est possible de m'expliquer peut-être plus en détaille le fonctionnement de la boucle pour, car ses peut être un manque de compréhension.
0
Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   101
 
Bonjour,

Une boucle
for
est définie par quatre éléments.
for ( <initialisation> ; <condition nécessaire> ; <expression pour réitération> )
   <effectué à chaque itération>

<initialisation> : on y déclare et/ou initialise ici la variable qui évoluera à chaque itération.
<condition> : à chaque itération y compris au début, cette expression doit être vraie, dès qu'elle devient fausse la boucle s'arrête.
<expression pour réitération> : après avoir <effectué à chaque itération>, cette expression est effectuée, cela permet de passer au cas suivant.
<effectué à chaque itération> : l'instruction à effectuer, s'il y a plusieurs choses on les regroupe en les encadrant par des accolades {}.

Des exemples :
// i commence à 2
// on continue tant qu'il reste inférieur à 5
// on ajoute 1 avant de recommencer
for ( int  i{2} ;  i <= 5 ;  ++i ) {
    std::cout << i << "  ";
} // donc va afficher : 2  3  4  5

// i commence à 5, on continue tant qu'il est positif, ici i doit être décrémenté
for ( int  i{5} ;  i >= 0 ;  --i ) {
    std::cout << i << "  ";
} // donc va afficher : 5  4  3  2  1  0

// on commence à -3, tant que le carré de i reste inférieur à 50, on avance de 2 en 2
for ( int  i{-3} ;  i*i < 50 ;  i+=2 ) { 
    std::cout << i << "  ";
} // donc va afficher : -3  -1  1  3  5  7

// idem en commençant par -8
for ( int  i{-8} ;  i*i < 50 ;  i+=2 ) { 
    std::cout << i << "  ";
} // rien n'est exécuté, le carré de 8 ne vérifie pas la condition
0
Bimoil Messages postés 29 Date d'inscription   Statut Membre Dernière intervention  
 
Je comprend, mais lorsque j'essaie de faire une imbrication sa ne fonctionne pas.
J'ai mis mon initialisation a 0 et je veut que le compteur s'arrête a 10. Pour ce qui est de la expression pour réitération je veut qu'elle augmente de 1 à chaque fois.
Je ne vois pas mon erreur.
ça devrait donner quelque chose comme sa


x
xx
xxx
xxxx
xxxxx
jusqu'à 10.


for (int i(0); i > 10; i++)
{

for (int j(0); i < 10; i++)

{
cout << endl;
cout << "* ";
}


cout << endl;

}
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
Ta première boucle n'est jamais exécutée, car
i > 10
est faux.

Fais déjà une seule boucle, dans laquelle tu affiches un seul x par ligne, donc un x suivi d'un retour à la ligne. Teste ton programme et vérifie qu'il fonctionne.

Lorsque tu auras fait cela, intègre une deuxième boucle, qui affiche un nombre de x par ligne augmenté de 1 à chaque itération suivis d'un retour à la ligne.

Tu auras alors terminé ton programme.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bimoil Messages postés 29 Date d'inscription   Statut Membre Dernière intervention  
 
Ma première boucle fonctionne le problème est ma deuxième.
J'ai crée cette algo avec algobox sans problème cependant a c++ il y a quelque chose que je ne comprend pas


{
int i, j;

for (i = 0; i < 10; i++)
{
cout << "* " << endl;

for (j = 0; j< 10; j++)
cout << "* " << endl;
}


}
0
Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   101
 
Ce que ton code fait :
Faire 10 fois :
- écrire une étoile seule sur une ligne.
- et écrire 10 étoiles seules sur une ligne (tu ajoutes un retour à la ligne après chaque étoile.)
Donc ton code va écrire 10*11=110 lignes d'une seule étoile! Tu es loin du résultat.

Ce qu'il faut faire :
Faire 10 fois :
- écrire X étoiles (X vaut 1 la première fois, 2 la seconde, ...)
- et revenir à la ligne.

Une idée : Si
j
varie de 0 jusqu'à
i
inclus, combien y aura-t-il d'étoiles en fonction de
i
?
0
Bimoil Messages postés 29 Date d'inscription   Statut Membre Dernière intervention  
 
Oui, merci !
0