Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1089 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Tableaux 2D - pourquoi c'est inversé ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Tableaux 2D - pourquoi c'est inversé ?

n°2222230
Sndk
Hardcore Gamer
Posté le 13-03-2014 à 13:48:19  profilanswer
 

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
mood
Publicité
Posté le 13-03-2014 à 13:48:19  profilanswer
 

n°2222234
Sndk
Hardcore Gamer
Posté le 13-03-2014 à 14:11:23  profilanswer
 

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


Message édité par Sndk le 13-03-2014 à 14:11:58

---------------
Mon topic - Mon Feed-Back
n°2222258
Terminapor
I'll see you rise.
Posté le 13-03-2014 à 17:34:00  profilanswer
 

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). :jap:
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 :
  1. for ( int i=0; i< n; ++i ) { ... }


 
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).


---------------
Perhaps you don't deserve to breathe
n°2222259
Sndk
Hardcore Gamer
Posté le 13-03-2014 à 17:37:52  profilanswer
 

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 :D
 
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)


Message édité par Sndk le 13-03-2014 à 19:03:34

---------------
Mon topic - Mon Feed-Back
n°2222260
theshockwa​ve
I work at a firm named Koslow
Posté le 13-03-2014 à 17:42:20  profilanswer
 

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 );


Message édité par theshockwave le 13-03-2014 à 17:43:49

---------------
last.fm
n°2222261
Sndk
Hardcore Gamer
Posté le 13-03-2014 à 17:45:11  profilanswer
 

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


Message édité par Sndk le 13-03-2014 à 17:45:22

---------------
Mon topic - Mon Feed-Back
n°2222263
Sndk
Hardcore Gamer
Posté le 13-03-2014 à 17:58:12  profilanswer
 

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 :D


---------------
Mon topic - Mon Feed-Back
n°2222264
theshockwa​ve
I work at a firm named Koslow
Posté le 13-03-2014 à 18:24:09  profilanswer
 

dans le code que tu as posté plus haut, tu déclares un tableau de vector<int> et tu utilises ca comme si c'était soit un tableau, soit un vector<int> ... C'est la source de tes erreurs.


---------------
last.fm
n°2222265
Sndk
Hardcore Gamer
Posté le 13-03-2014 à 18:37:38  profilanswer
 

c'est ce qui est écrit dans un tuto, je n'ai rien inventé (ça va venir :D)


---------------
Mon topic - Mon Feed-Back
n°2222266
theshockwa​ve
I work at a firm named Koslow
Posté le 13-03-2014 à 18:52:48  profilanswer
 

Je ne pense pas, parce que sinon, après un rebuild, ca ne compilerait pas.
 
tu as probablement confondu () et [] en faisant la première verison


---------------
last.fm
mood
Publicité
Posté le 13-03-2014 à 18:52:48  profilanswer
 

n°2222269
Sndk
Hardcore Gamer
Posté le 13-03-2014 à 19:04:28  profilanswer
 

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


Message édité par Sndk le 13-03-2014 à 19:04:53

---------------
Mon topic - Mon Feed-Back
n°2222271
theshockwa​ve
I work at a firm named Koslow
Posté le 13-03-2014 à 19:18:57  profilanswer
 

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.


---------------
last.fm
n°2222272
Sndk
Hardcore Gamer
Posté le 13-03-2014 à 19:30:56  profilanswer
 

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


---------------
Mon topic - Mon Feed-Back

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Tableaux 2D - pourquoi c'est inversé ?

 

Sujets relatifs
Graphiques 2D et 3D avec Drequete mysql ou comparaison de tableaux php ?
[PHP] IF qui fait l'inverse de ce qu'il doit faire...Lien inverse dans les bases des données objet
Requete croisée entre plusieurs tableaux (comme dans une DB)les tableaux d'enregistrement en c
Génération auto/aléatoire de map pour jeu 2Dfonctions et tableaux
[KML] Comment tranformer un polygone 2D en 3D?Identifier les mots dans les tableaux
Plus de sujets relatifs à : Tableaux 2D - pourquoi c'est inversé ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR