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();
}
Afficher la suite