Tableaux 2D - pourquoi c'est inversé ? - C++ - Programmation
Marsh Posté le 13-03-2014 à 14:11:23
je pense avoir trouvé, le break ne fini pas quand la seconde boucle se fini mais quand UNE PASSE de la seconde boucle se fini, pour le coup une fois j incrémenté on repasse dans la 1ere boucle (i) et donc on a sans le break :
1eme partie
i= 0
j= 0
0-0
j= 1
0-1
i= 1
j= 0
1-0
j= 1
1-1
Marsh Posté le 13-03-2014 à 17:34:00
break va simplement casser la boucle dans laquelle il est imbriqué, tout ce qui est après un break n'est pas exécuté par ailleurs (et contenu dans la boucle, bien-sûr).
Tu as aussi le mot-clef continue dans un boucle qui permet de passer directement à l'étape suivante sans exécuter aucune instruction postérieures (dans la boucle aussi).
Dans ton cas, tu cassais tout le temps ta boucle qui incrémentait j après avoir fait l'affichage, donc forcément j restait à 0.
Au passage, en C++ tu peux déclarer une variable dans une boucle/condition/whatever :
Code :
|
Ceci-dit, le "i" n'existera qu'au sein de la boucle (tu pourras pas récupérer sa valeur après que la boucle soit finie en gros).
Marsh Posté le 13-03-2014 à 17:37:52
Merci pour ton message, oui j'ai lu ça autre part, j'ai tout compris, merci.
j'en suis au tableau resizable vector<int> par exemple, j'ai pas de soucis avec les tableaux, meme 2 d mais là je galère .. je vais y arriver je le sens
int main() {
int const NbBestScore(5);
vector<int> bestScore (NbBestScore);
bestScore[0] = 125562;
bestScore[1] = 110588;
bestScore[2] = 254125;
bestScore[3] = 192548;
bestScore[4] = 100001;
for (int i(0) ; i<NbBestScore ; i++) {
cout << "Score " << i << " = " << bestScore [i] << endl;
}
}
des zillions d'erreurs du type :
..\src\Vector.cpp:28:49: note: cannot convert 'bestScore[i]' (type 'std::vector<int>') to type 'const unsigned char*'
cout << "Score " << i << " = " << bestScore [i] << endl;
alors que ça fonctionne avec des tableaux normaux (sans vector)
Marsh Posté le 13-03-2014 à 17:42:20
std::vector< std::vector< int > > bestScore( NbBestScore );
ca aidera déjà un peu
Edit : je comprends même pas pourquoi tu veux deux dimensions dans ce cas ... tu voulais peut-être ca ?
std::vector< int > bestScore( NbBestScore );
Marsh Posté le 13-03-2014 à 17:45:11
les 2 exemples n'ont rien à voir c'est pour ça.
je vois souvent le std::vector mais dans les tuto c'est pas écris comme ça, seul des mecs en parle, du coup je suis un peu paumé
voir ici :
http://fr.openclassrooms.com/infor [...] dynamiques
quand je fais un copié/collé de son prog , ya du rouge partout
Marsh Posté le 13-03-2014 à 17:58:12
bon ben en fait ça marche, je me demande quand il faut rebuilder son programme .. ou c'est moi qui délire ou c'est Eclipse
Marsh Posté le 13-03-2014 à 18:37:38
c'est ce qui est écrit dans un tuto, je n'ai rien inventé (ça va venir )
Marsh Posté le 13-03-2014 à 19:04:28
je viens de regarder, tu as raison .. le vector a des () le tableau des []
mea culpa
ps : encore un peu de travail et je vais pouvoir faire mon projet de robots sur échiquier yes
Marsh Posté le 13-03-2014 à 19:18:57
il faut que tu comprennes un peu mieux ce que tu écris.
Les paranthèses pour le vector, c'est pour faire appel à un autre de ses constructeurs.
Pour le tableau, tu demandes simplement à avoir autant d'objets alloués simultanément sur la pile. Ce sont des idées assez différentes.
Marsh Posté le 13-03-2014 à 19:30:56
si pour le tableau j'ai très bien compris en revanche pour les () du vector, pas, je vais relire voir si je trouve l"info, merci
Marsh Posté le 13-03-2014 à 13:48:19
Hello,
pourquoi quand j'écris ceci :
int tableauMines [2] [2];
int i,j,k,l;
for (i=0 ; i <3 ; i++) {
for (j=0 ; j <3 ; j++) {
tableauMines[i] [j] = 0;
cout << i << "-" << j << endl;
break;
}
}
j'ai ceci :
0-0
1-0
2-0
ne devrais je pas avoir 0-0 puis 0-1 ? la boucle j s'exécute 3 fois mais c'est i qui récupère la valeur .. je suis perdu.
comment c'est interprété svp ?
merci
---------------
Mon topic - Mon Feed-Back