Probléme de déplacement d'une case a une autre dans un tableaux de type char*

mlikos Messages postés 16 Date d'inscription mardi 18 décembre 2007 Statut Membre Dernière intervention 28 avril 2010 - 28 avril 2010 à 19:34
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 29 avril 2010 à 14:44
Bonjour,
est ce qq1 peut m'aider a résoudre ce problème :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct coordonnees
{
int x;
int y;
};
typedef struct coordonnees s_coo;
char* T[3][3]={{"111","111","111"},{"00","00","00"},{"22","22","222"}};

char* tab[31]={"",
"1","2",
"11","12",
"21","22",
"111","112",
"121","122",
"211","212",
"221","222",
"1111","1112","1121","1122",
"1211","1212","1221","1222",
"2111","2112","2121","2122",
"2211","2212","2221","2222",
};
int pos_pro;
int p;
int max=2;


void deplacer(s_coo pointd,s_coo pointa)
{
char* td=T[pointd.x][pointd.y];
char* ta=T[pointa.x][pointa.y];
char *charge;
char* cls;
printf("\n pointd.x=%d | pointd.y=%d | ",pointd.x ,pointd.y);
printf("\n pointa.x=%d | pointd.a=%d | ",pointa.x ,pointa.y);
int pos=1;

int taille_d=strlen(td)-1;
int taille_a=strlen(ta)-1;

printf(" \n taille_d=%d | taille_a=%d |",taille_d, taille_a);
int pos_d;
pos_d=taille_d-pos;
printf(" \n pos_d=%d |",pos_d);

// for( int j=0;j<taille_d;j++)

// pos_d=taille_d-pos-1;
char var;
int j=0;
int tmp_pos=pos_d;
char buffer;
printf(" jh %c",*T[pointd.x][pointd.y]);
// strcpy(buffer,T[pointd.x][pointd.y]);
for(pos_d;pos_d<taille_d;pos_d++)
{
printf("%c",td[pos_d]);
printf("td %c",td[pos_d]);

int pos_buffer=0;
int vrais=1;
while(vrais !=1)
{
for(int i=0;i<11;i++)
{

if(size_t(p)>0)
{
for(int z=0;z<size_t(p);z++)
{
if(p[z]=i)
{
char* buffer=tab[i];
int k=0;
for(int j=pos_buffer;j<strlen(buffer);j++)
{
if(buffer[j]=td[pos_d])
{
p[k]=i;
k++;
}
}
}
}
}
else
{
for(int j=0;j<size_t(buffer);j++)
{ int k=0;
char* buffer=tab[i];
if(buffer[j]=td[pos_d])
{
p[k]=i;
k++;
}
}
}
}
}

j++;

}
// strncpy(ta,td,pos_d);
// for(int i=0;i<taille_a;j++)
// ta[i]=td[i+pos_d];

printf("buffer %c",buffer);
printf("p %d",p[0]);

//T[pointa.x][pointa.y]="2";
T[pointa.x][pointa.y]=tab[p[0]];
// strcat(T[pointa.x][pointa.y],tab[p[0]]);


T[pointd.x][pointd.y]=tab[p[0]];
// T[pointd.x][pointd.y]=td[pos_d];
}


void symbole(int x)
{
char a;
a=x;
printf("%c",a);

}

int MAX(char* pile)
{

int var=strlen(pile);

if(var>max)
{
max=var ;
}
return max;
}

void Affiche_pile(char* pile,int pos)
{

int lent=strlen(pile);
char str[lent];
int i=0;
MAX(pile);
for(i=0;i<lent;i++)
{
str[i]=pile[i];
}

if(str[pos]=='1')
{
symbole(1);
}
else if(str[pos]=='2')
{
symbole(2);
}
else
{
symbole(0);

}
}

void Affiche()
{


int l=3;
int i,j,x;
for(i=0;i<l;i++)
{
if(i==0)
{
printf("\n ");
for(x=0;x<2*9-1;x++)
printf("_");
printf("\n");
}
for(j=0;j<l;j++)
{

if ( T[i][j]!=NULL)
{

// int Max=
max=2;
MAX(T[i][j]);
int e=0;
for(int z=0;z< max;z++)
{
printf(" | ");
for(j=0;j<l;j++)
{
Affiche_pile(T[i][j],z);
printf(" | ");
e++;
if(e==3)
{
printf("\n");

e=0;
}
}

}

}
else
printf(" ");

printf(" ");
for(x=0;x<2*9-1;x++)
printf("_");
printf("\n");

}
}



}






int main(void)
{

s_coo pointd;
s_coo pointa;

pointa.x=1;
pointd.x=2;
pointa.y=1;
pointd.y=1;
Affiche();
deplacer(pointd,pointa);
Affiche();


}

1 réponse

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
29 avril 2010 à 14:44
Hello,
est ce qq1 peut m'aider a résoudre ce problème

Quel est-il, ce problème?


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
Rejoignez-nous