Les tableaux en c

Fermé
toto9340 - 27 déc. 2009 à 15:57
 toto9340 - 27 déc. 2009 à 16:31
Bonjour,
comment on peut transformer un tableau à deux dimension à un tableau uni-dimensionnel
/* Affichage du tableau 2-dim */
printf("Tableau donné :\n");
for (I=0; I<L; I++)
{
for (J=0; J<C; J++)
printf("%7d", M[I][J]);
printf("\n");
}
/* Transfer des éléments ligne par ligne */
for (I=0; I<L; I++)
for (J=0; J<C; J++)
V[I*C+J] = M[I][J]; => j'ai pas compris ça veut dire quoi ?!!!!!!!
/* Affichage du tableau 1-dim */
printf("Tableau résultat : ");
for (I=0; I<L*C; I++)
printf("%d ", V[I]);
printf("\n");
return 0;
}
merci.

2 réponses

totofrancois Messages postés 398 Date d'inscription jeudi 19 novembre 2009 Statut Membre Dernière intervention 2 août 2013 44
27 déc. 2009 à 16:10
V[I*C+J] = M[I][J]; => j'ai pas compris ça veut dire quoi ?!!!!!!!

Le tableau V prend pour valeur la donnée contenu dans la matrice au coordonnées (i,j) et mets ça dans le tableau à l'indice ixc+j

exemple : V sera de la forme : (c=4 et l=4)

V[0] V[1] V[2] V[3] V[4]= V[C] dans mon exemple
V{ M[0][0], M[0][1], M[0][2],M[0][3], M[1][0]... }
0
salut , merci pour ta reponse , l'ai pas compris la logique de ce calcul V[I*C+J] = M[I][J] .
merci.
0
totofrancois Messages postés 398 Date d'inscription jeudi 19 novembre 2009 Statut Membre Dernière intervention 2 août 2013 44
27 déc. 2009 à 16:22
Ce calcul te permet de retrouver ta matrice initiale à partir du tableau résultat
V[0]=M[0][0]
V[1]=M[0][1]
V[2]=M[0][2]
V[3]=M[0][3]
V[4]=M[1][0]
V[5]=M[1][1] ---- 5 = 1*4 + 1 Donc si tu connais le 4 tu peux reconstituer ta matrice
V[6]=M[1][2] ----- car 5/4 = 1 et 5%4 = 1 don M[1][1]
V[7]=M[1][3]
V[8]=M[1][4]
V[9]=M[2][0]
V[10]=M[2][1]
V[11]=M[2][2]
V[12]=M[2][3]
V[13]=M[2][4]
V[14]=M[3][0]
V[15]=M[3][1]
V[16]=M[3][2]
V[17]=M[3][3]
V[18]=M[3][4]
V[19]=M[4][0]
V[20]=M[4][1]
V[21]=M[4][2]
V[22]=M[4][3] ravi d'avoir pu t'aider
V[23]=M[4][4]
0
je remercie beaucoup pour ton aide .
bonne journée .
0