Inverser elements dans un tableau
Bonjour à tous !
Je suis confronté à un problème pour inverser l'ordre des éléments d'un tableaux à deux dimensions; notamment pour inverser les lignes. En réalité, j'arrive à inverser l'ordre des éléments de la première ligne et non des suivantes ..
PS: l'encodage et l'affichage se fait par pointeur, l'inversion n'étant par pointeur car c'est pour me faciliter la tâche, je mettrai l'inversion avec des pointeurs lorsque la version par indice fonctionnera !
Voici mon code source:
Et en prime, voilà un screenshot lorsque j'encode et je veux inverser
[IMG=http://img521.imageshack.us/img521/3608/tabdeux.png][/IMG]
Uploaded with ImageShack.us
Merci de prendre mon problème en considération :)
Cracko' :)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
#include <stdio.h>
#define VMAX 10
void main()
{
int tab[VMAX][VMAX],i,j,nbl,nbc,*pt,temp,etat,k;
do
{
printf("Saisir le meme nbres de lignes et de colonnes");
fflush(stdin);
scanf("%d",&nbl);
}while(nbl<0||nbl>10);
nbc=nbl;
//encodage tableau
printf("\nEncodage du tableau\n");
pt=&tab[0][0];
for(i=0;i<nbl;i++)
{
for(j=0;j<nbc;j++)
{
printf("[%d][%d]",i,j);
fflush(stdin);
scanf("%d",pt);
pt++;
}
}
//Affichage du tableau
printf("Affichage du tableau");
pt=&tab[0][0];
for(i=0;i<nbl;i++)
{
for(j=0;j<nbc;j++)
{
printf("\n[%d][%d]:%d",i,j,*pt);
pt++;
}
}
//boucle qui inverse l'ordre des lignes du tableau, c'est ici que ça coince
for(i=0;i<nbl-1;i++)
{
for(j=0,k=nbc-1;j<k;j++,k--)
{
temp=tab[i][j];
tab[i][j]=tab[i][k];
tab[i][k]=temp;
}
}
printf("\nAffichage\n");
//Affichage du tableau inverse
pt=&tab[0][0];
for(i=0;i<nbl;i++)
{
for(j=0;j<nbc;j++)
{
printf("\n[%d][%d]:%d",i,j,*pt);
pt++;
}
}
fflush(stdin);
getchar();
} |