Besoin d'aide appel de tableau - C - Programmation
Marsh Posté le 11-06-2013 à 16:41:16
Pour apporter plus de renseignement :
int main()
{
int i=0; //Création du plateau 25 lignes 12 colonnes
int j=0;
int PlateauOriginal[25][12];
for (i=0; i<24; i++){
for (j=0; j<12; j++){
PlateauOriginal[i][j]=0;
printf("%d", PlateauOriginal[i][j]);
}
printf("\n" );
}
int k=0;
int l=0;
int TableauBarre[6][6]={ { 1 , 1 , 1 , 1 } };
for (k=0; k<5; k++){
for (l=0; l<5; l++){
printf("%d", TableauBarre[k][l]);
}
printf("\n" );
}
ici j'aimerai appeler PlateauOriginal pour le retravaillé, mais je n'y parviens pas.
Comment faire svp.
Merci
Marsh Posté le 11-06-2013 à 17:03:16
qu'entends-tu par "appeler" un tableau ? Faire une nouvelle boucle ?
Sinon quelques erreurs. Les critères de fin de boucle sont "faux"
Code :
|
L'init du tableau TableauBarre est fausse : tableau 6x6 et tu files un tableaux 1x4
Code :
|
Et pourquoi TableauBarre n'a pas les même dimensions que TableauOriginal ?
Sinon à la fin du code rien n'empêche de faire
Code :
|
Marsh Posté le 11-06-2013 à 17:14:13
Pour les fins de boucles :
Comme je veux initialiser un tableau de 25 lignes et que i est initialiser à 0 ca ne me fait plus que 24 non? (pareil pour j)
Ensuite mon tableau barre est bon, puisque je ne veux que quatre 1 et le reste à 0. Le printf est bon.
Mon tableau de [6][6] doit ressembler à ceci:
111100
000000
000000
000000
000000
000000
Tableau Barre est plus petit que PlateauOriginal car j'aimerai insérer Tableau Barre dans PlateauOriginial. Si j'ai un tableau de [6][6] c'est pour pouvoir par la suite faire pivoter la barre par symétrie.
Sinon l'astuce de fin que tu donnes je ne sais pas trop ce qu'elle veut dire. Pourrais-tu me donner plus d'explications?
En tout cas merci pour le temps que tu prends pour m'aider.
PS: Ce que j'entend par appeler c'est pouvoir réutiliser PlateauOriginal après sa boucle.
Le but de ma manoeuvre serait de copier TableauBarre dans PlateauOriginal comme ceci:
111100000000
000000000000
000000000000
000000000000
... etc
Marsh Posté le 11-06-2013 à 17:25:57
Aïe : la boucle for n'est pas comprise
for(i=0;i<24;i++) est équivalent à Pour i allant de 0 à 23 (or le tableau va de 0 à 24)
Et si tu veux "recopier" un tableau dans un autre, il n'y a pas d'autre choix que de boucler sur l'un d'entre eux et à l'intérieur de la double boucle, faire une mapping d'indice (dans mon exemple, c'est un modulo qui fait office de mapping) et de faire (principe générique)
Code :
|
Marsh Posté le 11-06-2013 à 17:44:25
D'accord, mais la fonction memcpy ne me servirait pas alors?
Marsh Posté le 11-06-2013 à 18:34:01
memcpy est à utiliser avec parcimonie/maîtrise (alignement, structure du tableau et sa taille, ....) . Bref, si erreur sur le for, alors memcpy est "dangereux" dans son fonctionnement (copie de bloc mémoire <> copie de champs)... Pour démarrer, je préfère proposer la copie "champ à champ" en C (et même en C++).
Marsh Posté le 11-06-2013 à 16:29:38
Bonjour à tous,
Bon commençons par le commencement : je suis novice en prog'.
j'ai créé 2 tableaux à 2 dimensions.
Le premier initialiser qu'avec des 0.
Le deuxieme possède des valeurs.
Les 2 ont été créé avec des boucles.
Le problème arrive ici, j'aimerai retravaillé le premier après la boucle mais je n'y arrive pas...
Comment pourrais-je appeler ce tableau?
Je vous remerci d'avance,
Message édité par maryanno le 11-06-2013 à 16:44:14