Posté(e) le 26 janvier 200817 a Bonsoir, j'essaye actuellement de developper un puissance 4 en mode console pour m'assurer de la maitrise des tableaux, appels de fonctions avec arguments, boucles etc etc, j'y arrive bien excepte une chose: comment initialiser une matrice de [6][7] de char a la valeur " " (espace) en un coup ? En effet, ecrire {{" ", " ", ...}] me semble assez fastidieux, et k'imagine qu'il existe bien une solution alter,ative non ? J'ai essaye char cmatrix[6][7] = {" "} ; mais ca ne donne rien... Et si tous les sites expliquent comment initilaiser une aprtie de la matrice, aucun ,ne dit comment tout initialiser d'un coup. Quelqu'un a-t-il la bonne syntaxe pour cette operation ? Merci d'avance pour vos reponses et bonne soiree PS: j'utilise code:blocks
Posté(e) le 26 janvier 200817 a Avec 2 boucles 'for' imbriquées, ça n'irait pas ? Je te l'écris comme on l'écrirait en Java, à toi d'adapter pour le C++ si besoin est: for( int i = 0; i < tab.length; i ++ ) { for( int j = 0; j < tab[i].length; j ++ ) { tab[i][j] = " "; } }
Posté(e) le 26 janvier 200817 a Auteur Ah ouais, pas con du tout, bien vu Cependant, je me demande s'il n'existe pas de solution plus propre... mais faute de mieux je me servirai de cela, merci beaucoup !
Posté(e) le 27 janvier 200817 a En c++ on n'a pas accés à la taille des tableaux. De plus il ne faut pas confondre des strings (" ") et des chars (' ') for( int i = 0; i < 6; ++i) for( int j = 0; j < 7; ++j) tab[i][j] = ' ';
Posté(e) le 27 janvier 200817 a J'ai essaye char cmatrix[6][7] = {" "} ; mais ca ne donne rien... Le code exact serait plutôt char cmatrix[6][7] = {{" "}} Mais ça ne te remplirait que la première case à " " et tout le reste à 0. Les réponses au dessus sont un peu compliquées... La réponse serait plutôt : memset ((void *)cmatrix, (int)' ', 6*7);
Posté(e) le 23 février 200817 a memset ((void *)cmatrix, (int)' ', 6*7); Perfect ! C'était ma réponse...
Posté(e) le 25 février 200817 a Les réponses au dessus sont un peu compliquées...La réponse serait plutôt : memset ((void *)cmatrix, (int)' ', 6*7); Merde ^^ Je serai pas du genre a penser ce genre de truc Mais dire que les solutions du dessus sont compliquées, je ne trouve pas . Apres, elle sont surement moins performantes je pense, mais plus compliquées, pas vraiment
Posté(e) le 25 février 200817 a je rajouterai meme que c'est idiot de montrer un memset (qui est une bidouille mémoire, non générique) plutot que deux boucles imbriquées qui est plus explicite d'un point de vu algorithmique...
Posté(e) le 26 février 200817 a rhaaa, je suis pas d'accord. J'aime beaucoup le memset parce qu'il force a comprendre comment sont mappées les données en mémoire. Pour moi, c'est vital de savoir comment fonctionne la mémoire, surtout en C/C++. Il n'y a rien de plus désastreux que ceux qui programment en gardant une vision "boîte noire" de l'outil qu'ils exploitent.
Posté(e) le 26 février 200817 a je rajouterai meme que c'est idiot de montrer un memset (qui est une bidouille mémoire, non générique) plutot que deux boucles imbriquées qui est plus explicite d'un point de vu algorithmique... Moi je ne suis pas d'accord pour faire deux boucles imbriquées. Je pense qu'on devrait mettre à zéro successivement tous les bits un par un en appelant une routine en assembleur, quitte à faire dans la simplicité.
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.