Violation d'accès (erreur de segmentation)
saphira5
-
oupsman Messages postés 319 Statut Membre -
oupsman Messages postés 319 Statut Membre -
Bonjour,
Mon programme C n'a pas d'erreur de compilation mais lors de l'exécution, un warning apparaît "Une violation d'accès (erreur de segmentation) est apparue dans votre programme". J'utilise Dev-c. Mon programme doit effectuer plusieurs boucles et j'ai défini les boucles par des fonctions. Le problème peut-il venir d'ici?
Mon programme C n'a pas d'erreur de compilation mais lors de l'exécution, un warning apparaît "Une violation d'accès (erreur de segmentation) est apparue dans votre programme". J'utilise Dev-c. Mon programme doit effectuer plusieurs boucles et j'ai défini les boucles par des fonctions. Le problème peut-il venir d'ici?
A voir également:
- Violation d'accès (erreur de segmentation)
- Acces rapide - Guide
- Accès refusé - Guide
- Donnez à ce fichier les mêmes droits d'accès que les autres notes de service. ✓ - Forum Windows
- Erreur upes 1025 - Forum Téléviseurs
- Bbox controle d'acces wifi - Forum WiFi
3 réponses
ben ouais surement que ca vient d'un problème d'indice dans un tableau.
Debug ton truc pas à pas si tu parviens pas à voir l'erreur.
Debug ton truc pas à pas si tu parviens pas à voir l'erreur.
saphira5
Mon programme stocke des valeurs dans un tableau à 2 dimensions mais au bout d'un moment, il ne stocke pas la valeur mais doit la voir plutôt comme une adresse. Ma boucle principale fonctionne une à 2 foiset au passage d'après ca merde.
donc tu sais d'où vient le problème, c'est tout bon. On peut pas le résoudre sans avoir le code sous les yeux...
Le programme est un peu long, il permet de reconstituer un puzzle de 9 pièces carrées.
#include <stdio.h>
/*déclaration des variables*/
int a,b,c,d,i,n,w,x,y,z,I,K,X,Y;
/*déclaration des tableaux*/
int A[10],B[10],C[10],D[10],E[10],R[10];
int P[3][3];
/*Déclaration des fonctions*/
void PuzzleFini(void);
void RestePiece(void);
void PieceLibre(void);
void TestPiece(void);
void MemoPiece(void);
void EmplSuiv(void);
void EmplPreced(void);
void PiecSuiv(void);
void Affichage(void);
void pieceactive(void);
void testprincipale(void);
void etatrotation(void);
void PuzzleFini(void)
{
if (Y!=3)
{
RestePiece();
}
else
{
printf ("puzzle fini!\n");
Affichage();
printf("Le calvaire est fini.");
}
}
void RestePiece(void)
{
if (((X==0)||(X==2))&&((Y==0)||(Y==2))&&(I>3))
{
EmplPreced();
}
if ((((X==0)||(X==2))&&(Y>0)&&(Y<2)&&(I>7))||((X>0)&&(X<2)&&((Y==0)||(Y==2))&&(I>7)))
{
EmplPreced();
}
if ((X>0)&&(X<2)&&(Y>0)&&(Y<2)&&(I>9))
{
EmplPreced();
}
else
{
PieceLibre();
}
}
void PieceLibre(void)
{
if(E[I]==0)
{
TestPiece();
}
else
{
PiecSuiv();
}
}
void TestPiece(void)
{
if (X==0)
{w=1;}
else
{
i=P[X-1][Y];
n=R[i];
if (n==0)
{w=C[i];}
if (n==1)
{w=D[i];}
if (n==2)
{w=A[i];}
if (n==3)
{w=B[i];}
}
if(Y==0)
{x=1;}
else
{
i=P[X][Y-1];
n=R[i];
if (n==0)
{x=D[i];}
if (n==1)
{x=A[i];}
if (n==2)
{x=B[i];}
if (n==3)
{x=C[i];}
}
if (X==2)
{y=1;}
if (Y==2)
{z=1;}
pieceactive();
}
void pieceactive(void)
{
n=R[I];
if (n==0)
{a=A[I];b=B[I];c=C[I];d=D[I];}
if (n==1)
{a=B[I];b=C[I];c=D[I];d=A[I];}
if (n==2)
{a=C[I];b=D[I];c=A[I];d=B[I];}
if (n==3)
{a=D[I];b=A[I];c=B[I];d=C[I];}
testprincipale();
}
void testprincipale(void)
{
if ((a!=w)||(b!=x))
{
etatrotation();
}
else
{
if(Y==2)
{
if(c!=y)
{etatrotation();}
}
if(X==2)
{
if(d!=z)
{etatrotation();}
}
else
{MemoPiece();}
}
}
void etatrotation(void)
{
R[I]=R[I]+1;
if (R[I]==4)
{
R[I]=0;
PiecSuiv();
}
else
{
pieceactive();
}
}
void MemoPiece(void)
{
if ((X==0)&&(Y==0))
{P[0][0]=I+1;}
if ((X==1)&&(Y==0))
{P[1][0]=I+1;}
if ((X==2)&&(Y==0))
{P[2][0]=I+1;}
if ((X==0)&&(Y==1))
{P[0][1]=I+1;}
if ((X==1)&&(Y==1))
{P[1][1]=I+1;}
if ((X==2)&&(Y==1))
{P[2][1]=I+1;}
if ((X==0)&&(Y==2))
{P[0][2]=I+1;}
if ((X==1)&&(Y==2))
{P[1][2]=I+1;}
if ((X==2)&&(Y==2))
{P[2][2]=I+1;}
E[I]=1;
EmplSuiv();
}
void EmplSuiv(void)
{
X=X+1;
if (X>2)
{
X=0;
Y=Y+1;
}
if (((X==0)||(X==2))&&((Y==0)||(Y==2)))
{I=0;}
if ((((X==0)||(X==2))&&(Y>0)&&(Y<2))||((X>0)&&(X<2)&&((Y==0)||(Y==2))))
{I=4;}
if ((X>0)&&(X<2)&&(Y>0)&&(Y<2))
{I=8;}
PuzzleFini();
}
void EmplPreced(void)
{
X=X-1;
if (X==0)
{
X=2;
Y=Y-1;
}
I=P[X][Y]-1;
E[I]=0;
R[I]=R[I]+1;
RestePiece();
}
void PiecSuiv(void)
{
I=I+1;
RestePiece();
}
void Affichage(void)
{
printf("Tableau pieces:\n");
X=0;
Y=0;
do
{
K=P[X][Y];
printf("%d ",K);
X=X+1;
if (X>2)
{
printf("\n");
X=0;
Y=Y+1;
}
}
while(Y<3);
printf("Tableau rotation:\n");
X=0;
Y=0;
do
{
i=P[X][Y];
K=R[i];
printf("%d ",K);
X=X+1;
if (X>2)
{
printf("\n");
X=0;
Y=Y+1;
}
}
while(Y<3);
}
main()
{
X=0;
Y=0;
K=0;
I=0;
while(K<10)
{
R[K]=0;
E[K]=0;
K++;
}
while(Y<3)
{
while(X<3)
{
P[X][Y]=0;
X++;
}
if(X==3)
{
Y=Y+1;
X=0;
}
}
A[0]=1; B[0]=2; C[0]=14; D[0]=1;
A[1]=1; B[1]=1; C[1]=2; D[1]=14;
A[2]=1; B[2]=1; C[2]=3; D[2]=4;
A[3]=1; B[3]=1; C[3]=4; D[3]=3;
A[4]=1; B[4]=3; C[4]=13; D[4]=2;
A[5]=1; B[5]=4; C[5]=5; D[5]=3;
A[6]=1; B[6]=4; C[6]=13; D[6]=4;
A[7]=1; B[7]=14; C[7]=7; D[7]=2;
A[8]=5; B[8]=7; C[8]=13; D[8]=17;
A[9]=5; B[9]=7; C[9]=13; D[9]=13;
Y=0;
K=0;
PuzzleFini();
getchar();
}
Si tu as des questions sur le principe de fonctionnement, hésite pas. Encore merci.
#include <stdio.h>
/*déclaration des variables*/
int a,b,c,d,i,n,w,x,y,z,I,K,X,Y;
/*déclaration des tableaux*/
int A[10],B[10],C[10],D[10],E[10],R[10];
int P[3][3];
/*Déclaration des fonctions*/
void PuzzleFini(void);
void RestePiece(void);
void PieceLibre(void);
void TestPiece(void);
void MemoPiece(void);
void EmplSuiv(void);
void EmplPreced(void);
void PiecSuiv(void);
void Affichage(void);
void pieceactive(void);
void testprincipale(void);
void etatrotation(void);
void PuzzleFini(void)
{
if (Y!=3)
{
RestePiece();
}
else
{
printf ("puzzle fini!\n");
Affichage();
printf("Le calvaire est fini.");
}
}
void RestePiece(void)
{
if (((X==0)||(X==2))&&((Y==0)||(Y==2))&&(I>3))
{
EmplPreced();
}
if ((((X==0)||(X==2))&&(Y>0)&&(Y<2)&&(I>7))||((X>0)&&(X<2)&&((Y==0)||(Y==2))&&(I>7)))
{
EmplPreced();
}
if ((X>0)&&(X<2)&&(Y>0)&&(Y<2)&&(I>9))
{
EmplPreced();
}
else
{
PieceLibre();
}
}
void PieceLibre(void)
{
if(E[I]==0)
{
TestPiece();
}
else
{
PiecSuiv();
}
}
void TestPiece(void)
{
if (X==0)
{w=1;}
else
{
i=P[X-1][Y];
n=R[i];
if (n==0)
{w=C[i];}
if (n==1)
{w=D[i];}
if (n==2)
{w=A[i];}
if (n==3)
{w=B[i];}
}
if(Y==0)
{x=1;}
else
{
i=P[X][Y-1];
n=R[i];
if (n==0)
{x=D[i];}
if (n==1)
{x=A[i];}
if (n==2)
{x=B[i];}
if (n==3)
{x=C[i];}
}
if (X==2)
{y=1;}
if (Y==2)
{z=1;}
pieceactive();
}
void pieceactive(void)
{
n=R[I];
if (n==0)
{a=A[I];b=B[I];c=C[I];d=D[I];}
if (n==1)
{a=B[I];b=C[I];c=D[I];d=A[I];}
if (n==2)
{a=C[I];b=D[I];c=A[I];d=B[I];}
if (n==3)
{a=D[I];b=A[I];c=B[I];d=C[I];}
testprincipale();
}
void testprincipale(void)
{
if ((a!=w)||(b!=x))
{
etatrotation();
}
else
{
if(Y==2)
{
if(c!=y)
{etatrotation();}
}
if(X==2)
{
if(d!=z)
{etatrotation();}
}
else
{MemoPiece();}
}
}
void etatrotation(void)
{
R[I]=R[I]+1;
if (R[I]==4)
{
R[I]=0;
PiecSuiv();
}
else
{
pieceactive();
}
}
void MemoPiece(void)
{
if ((X==0)&&(Y==0))
{P[0][0]=I+1;}
if ((X==1)&&(Y==0))
{P[1][0]=I+1;}
if ((X==2)&&(Y==0))
{P[2][0]=I+1;}
if ((X==0)&&(Y==1))
{P[0][1]=I+1;}
if ((X==1)&&(Y==1))
{P[1][1]=I+1;}
if ((X==2)&&(Y==1))
{P[2][1]=I+1;}
if ((X==0)&&(Y==2))
{P[0][2]=I+1;}
if ((X==1)&&(Y==2))
{P[1][2]=I+1;}
if ((X==2)&&(Y==2))
{P[2][2]=I+1;}
E[I]=1;
EmplSuiv();
}
void EmplSuiv(void)
{
X=X+1;
if (X>2)
{
X=0;
Y=Y+1;
}
if (((X==0)||(X==2))&&((Y==0)||(Y==2)))
{I=0;}
if ((((X==0)||(X==2))&&(Y>0)&&(Y<2))||((X>0)&&(X<2)&&((Y==0)||(Y==2))))
{I=4;}
if ((X>0)&&(X<2)&&(Y>0)&&(Y<2))
{I=8;}
PuzzleFini();
}
void EmplPreced(void)
{
X=X-1;
if (X==0)
{
X=2;
Y=Y-1;
}
I=P[X][Y]-1;
E[I]=0;
R[I]=R[I]+1;
RestePiece();
}
void PiecSuiv(void)
{
I=I+1;
RestePiece();
}
void Affichage(void)
{
printf("Tableau pieces:\n");
X=0;
Y=0;
do
{
K=P[X][Y];
printf("%d ",K);
X=X+1;
if (X>2)
{
printf("\n");
X=0;
Y=Y+1;
}
}
while(Y<3);
printf("Tableau rotation:\n");
X=0;
Y=0;
do
{
i=P[X][Y];
K=R[i];
printf("%d ",K);
X=X+1;
if (X>2)
{
printf("\n");
X=0;
Y=Y+1;
}
}
while(Y<3);
}
main()
{
X=0;
Y=0;
K=0;
I=0;
while(K<10)
{
R[K]=0;
E[K]=0;
K++;
}
while(Y<3)
{
while(X<3)
{
P[X][Y]=0;
X++;
}
if(X==3)
{
Y=Y+1;
X=0;
}
}
A[0]=1; B[0]=2; C[0]=14; D[0]=1;
A[1]=1; B[1]=1; C[1]=2; D[1]=14;
A[2]=1; B[2]=1; C[2]=3; D[2]=4;
A[3]=1; B[3]=1; C[3]=4; D[3]=3;
A[4]=1; B[4]=3; C[4]=13; D[4]=2;
A[5]=1; B[5]=4; C[5]=5; D[5]=3;
A[6]=1; B[6]=4; C[6]=13; D[6]=4;
A[7]=1; B[7]=14; C[7]=7; D[7]=2;
A[8]=5; B[8]=7; C[8]=13; D[8]=17;
A[9]=5; B[9]=7; C[9]=13; D[9]=13;
Y=0;
K=0;
PuzzleFini();
getchar();
}
Si tu as des questions sur le principe de fonctionnement, hésite pas. Encore merci.
En debuggant, il perd la destination de l'assignation et je vois bien que l'assignation ne se fait pas pourtant les valeurs de mes variables sont bonnes ce qui devrait permettre l'assignation. L'assignation s'effectue correctement sur les 2 premiers passages dans la boucle mais au troisième passage???
salut, "erreur de segmentation" veut dire qu'ily a un pointeur qui pointe là où il ne doit pas. Vérifies bien si t'aurais pas oublié d'initialiser un pointeur quelque part ou peut-ête que ton pointeur déborde un tableau .... comme ce qui est dit dans le post 1, faut voir pas à pas tes fonctions
Essaies ce programme, il marche chez moi, dis-nous s'il y a un problème :
#include <stdio.h>
/*déclaration des variables*/
int a,b,c,d,i,n,w,x,y,z,I,K,X,Y;
/*déclaration des tableaux*/
int A[10],B[10],C[10],D[10],E[10],R[10];
int P[3][3];
/*Déclaration des fonctions*/
void PuzzleFini(void);
void RestePiece(void);
void PieceLibre(void);
void TestPiece(void);
void MemoPiece(void);
void EmplSuiv(void);
void EmplPreced(void);
void PiecSuiv(void);
void Affichage(void);
void pieceactive(void);
void testprincipale(void);
void etatrotation(void);
/*******************************************************/
void PuzzleFini(void){
if(Y!=3) RestePiece();
else{
printf ("puzzle fini!\n");
Affichage();
printf("Le calvaire est fini.");
}
}
/********************************************************/
void RestePiece(void){
if (((X==0)||(X==2))&&((Y==0)||(Y==2))&&(I>3)) EmplPreced();
if ((((X==0)||(X==2))&&(Y>0)&&(Y<2)&&(I>7))||((X>0)&&(X<2)&&((Y==0)||(Y==2))&&(I>7))) EmplPreced();
if ((X>0)&&(X<2)&&(Y>0)&&(Y<2)&&(I>9)) EmplPreced();
else PieceLibre();
}
/*********************************************************/
void PieceLibre(void){
if(E[I]==0) TestPiece();
else PiecSuiv();
}
/************************************************************/
void TestPiece(void){
if(X==0) w=1;
else i=P[X-1][Y];
n=R[i];
if(n==0) w=C[i];
if(n==1) w=D[i];
if(n==2) w=A[i];
if(n==3) w=B[i];
if(Y==0) x=1;
else i=P[X][Y-1];
n=R[i];
if (n==0) x=D[i];
if (n==1) x=A[i];
if (n==2) x=B[i];
if (n==3) x=C[i];
if (X==2) y=1;
if (Y==2) z=1;
pieceactive();
}
/*********************************************/
void pieceactive(void)
{
n=R[I];
if (n==0)
{a=A[I];b=B[I];c=C[I];d=D[I];}
if (n==1)
{a=B[I];b=C[I];c=D[I];d=A[I];}
if (n==2)
{a=C[I];b=D[I];c=A[I];d=B[I];}
if (n==3)
{a=D[I];b=A[I];c=B[I];d=C[I];}
testprincipale();
}
void testprincipale(void)
{
if ((a!=w)||(b!=x))
{
etatrotation();
}
else
{
if(Y==2)
{
if(c!=y)
{etatrotation();}
}
if(X==2)
{
if(d!=z)
{etatrotation();}
}
else
{MemoPiece();}
}
}
void etatrotation(void)
{
R[I]=R[I]+1;
if (R[I]==4)
{
R[I]=0;
PiecSuiv();
}
else
{
pieceactive();
}
}
void MemoPiece(void)
{
if ((X==0)&&(Y==0))
{P[0][0]=I+1;}
if ((X==1)&&(Y==0))
{P[1][0]=I+1;}
if ((X==2)&&(Y==0))
{P[2][0]=I+1;}
if ((X==0)&&(Y==1))
{P[0][1]=I+1;}
if ((X==1)&&(Y==1))
{P[1][1]=I+1;}
if ((X==2)&&(Y==1))
{P[2][1]=I+1;}
if ((X==0)&&(Y==2))
{P[0][2]=I+1;}
if ((X==1)&&(Y==2))
{P[1][2]=I+1;}
if ((X==2)&&(Y==2))
{P[2][2]=I+1;}
E[I]=1;
EmplSuiv();
}
void EmplSuiv(void)
{
X=X+1;
if (X>2)
{
X=0;
Y=Y+1;
}
if (((X==0)||(X==2))&&((Y==0)||(Y==2)))
{I=0;}
if ((((X==0)||(X==2))&&(Y>0)&&(Y<2))||((X>0)&&(X<2)&&((Y==0)||(Y==2))))
{I=4;}
if ((X>0)&&(X<2)&&(Y>0)&&(Y<2))
{I=8;}
PuzzleFini();
}
void EmplPreced(void)
{
X=X-1;
if (X==0)
{
X=2;
Y=Y-1;
}
I=P[X][Y]-1;
E[I]=0;
R[I]=R[I]+1;
RestePiece();
}
void PiecSuiv(void)
{
I=I+1;
RestePiece();
}
void Affichage(void)
{
printf("Tableau pieces:\n");
X=0;
Y=0;
do
{
K=P[X][Y];
printf("%d ",K);
X=X+1;
if (X>2)
{
printf("\n");
X=0;
Y=Y+1;
}
}
while(Y<3);
printf("Tableau rotation:\n");
X=0;
Y=0;
do
{
i=P[X][Y];
K=R[i];
printf("%d ",K);
X=X+1;
if (X>2)
{
printf("\n");
X=0;
Y=Y+1;
}
}
while(Y<3);
}
/**************************************************************************/
/**************************************************************************/
int main(){
X=0, Y=0, K=0, I=0;
while(K<10){
R[K]=0;
E[K]=0;
K++;
}
while(Y<3){
while(X<3){
P[X][Y]=0;
X++;
}
if(X==3){
Y=Y+1;
X=0;
}
}
A[0]=1; B[0]=2; C[0]=14; D[0]=1;
A[1]=1; B[1]=1; C[1]=2; D[1]=14;
A[2]=1; B[2]=1; C[2]=3; D[2]=4;
A[3]=1; B[3]=1; C[3]=4; D[3]=3;
A[4]=1; B[4]=3; C[4]=13; D[4]=2;
A[5]=1; B[5]=4; C[5]=5; D[5]=3;
A[6]=1; B[6]=4; C[6]=13; D[6]=4;
A[7]=1; B[7]=14; C[7]=7; D[7]=2;
A[8]=5; B[8]=7; C[8]=13; D[8]=17;
A[9]=5; B[9]=7; C[9]=13; D[9]=13;
Y=0;
K=0;
PuzzleFini();
getchar();
return 0;
}
#include <stdio.h>
/*déclaration des variables*/
int a,b,c,d,i,n,w,x,y,z,I,K,X,Y;
/*déclaration des tableaux*/
int A[10],B[10],C[10],D[10],E[10],R[10];
int P[3][3];
/*Déclaration des fonctions*/
void PuzzleFini(void);
void RestePiece(void);
void PieceLibre(void);
void TestPiece(void);
void MemoPiece(void);
void EmplSuiv(void);
void EmplPreced(void);
void PiecSuiv(void);
void Affichage(void);
void pieceactive(void);
void testprincipale(void);
void etatrotation(void);
/*******************************************************/
void PuzzleFini(void){
if(Y!=3) RestePiece();
else{
printf ("puzzle fini!\n");
Affichage();
printf("Le calvaire est fini.");
}
}
/********************************************************/
void RestePiece(void){
if (((X==0)||(X==2))&&((Y==0)||(Y==2))&&(I>3)) EmplPreced();
if ((((X==0)||(X==2))&&(Y>0)&&(Y<2)&&(I>7))||((X>0)&&(X<2)&&((Y==0)||(Y==2))&&(I>7))) EmplPreced();
if ((X>0)&&(X<2)&&(Y>0)&&(Y<2)&&(I>9)) EmplPreced();
else PieceLibre();
}
/*********************************************************/
void PieceLibre(void){
if(E[I]==0) TestPiece();
else PiecSuiv();
}
/************************************************************/
void TestPiece(void){
if(X==0) w=1;
else i=P[X-1][Y];
n=R[i];
if(n==0) w=C[i];
if(n==1) w=D[i];
if(n==2) w=A[i];
if(n==3) w=B[i];
if(Y==0) x=1;
else i=P[X][Y-1];
n=R[i];
if (n==0) x=D[i];
if (n==1) x=A[i];
if (n==2) x=B[i];
if (n==3) x=C[i];
if (X==2) y=1;
if (Y==2) z=1;
pieceactive();
}
/*********************************************/
void pieceactive(void)
{
n=R[I];
if (n==0)
{a=A[I];b=B[I];c=C[I];d=D[I];}
if (n==1)
{a=B[I];b=C[I];c=D[I];d=A[I];}
if (n==2)
{a=C[I];b=D[I];c=A[I];d=B[I];}
if (n==3)
{a=D[I];b=A[I];c=B[I];d=C[I];}
testprincipale();
}
void testprincipale(void)
{
if ((a!=w)||(b!=x))
{
etatrotation();
}
else
{
if(Y==2)
{
if(c!=y)
{etatrotation();}
}
if(X==2)
{
if(d!=z)
{etatrotation();}
}
else
{MemoPiece();}
}
}
void etatrotation(void)
{
R[I]=R[I]+1;
if (R[I]==4)
{
R[I]=0;
PiecSuiv();
}
else
{
pieceactive();
}
}
void MemoPiece(void)
{
if ((X==0)&&(Y==0))
{P[0][0]=I+1;}
if ((X==1)&&(Y==0))
{P[1][0]=I+1;}
if ((X==2)&&(Y==0))
{P[2][0]=I+1;}
if ((X==0)&&(Y==1))
{P[0][1]=I+1;}
if ((X==1)&&(Y==1))
{P[1][1]=I+1;}
if ((X==2)&&(Y==1))
{P[2][1]=I+1;}
if ((X==0)&&(Y==2))
{P[0][2]=I+1;}
if ((X==1)&&(Y==2))
{P[1][2]=I+1;}
if ((X==2)&&(Y==2))
{P[2][2]=I+1;}
E[I]=1;
EmplSuiv();
}
void EmplSuiv(void)
{
X=X+1;
if (X>2)
{
X=0;
Y=Y+1;
}
if (((X==0)||(X==2))&&((Y==0)||(Y==2)))
{I=0;}
if ((((X==0)||(X==2))&&(Y>0)&&(Y<2))||((X>0)&&(X<2)&&((Y==0)||(Y==2))))
{I=4;}
if ((X>0)&&(X<2)&&(Y>0)&&(Y<2))
{I=8;}
PuzzleFini();
}
void EmplPreced(void)
{
X=X-1;
if (X==0)
{
X=2;
Y=Y-1;
}
I=P[X][Y]-1;
E[I]=0;
R[I]=R[I]+1;
RestePiece();
}
void PiecSuiv(void)
{
I=I+1;
RestePiece();
}
void Affichage(void)
{
printf("Tableau pieces:\n");
X=0;
Y=0;
do
{
K=P[X][Y];
printf("%d ",K);
X=X+1;
if (X>2)
{
printf("\n");
X=0;
Y=Y+1;
}
}
while(Y<3);
printf("Tableau rotation:\n");
X=0;
Y=0;
do
{
i=P[X][Y];
K=R[i];
printf("%d ",K);
X=X+1;
if (X>2)
{
printf("\n");
X=0;
Y=Y+1;
}
}
while(Y<3);
}
/**************************************************************************/
/**************************************************************************/
int main(){
X=0, Y=0, K=0, I=0;
while(K<10){
R[K]=0;
E[K]=0;
K++;
}
while(Y<3){
while(X<3){
P[X][Y]=0;
X++;
}
if(X==3){
Y=Y+1;
X=0;
}
}
A[0]=1; B[0]=2; C[0]=14; D[0]=1;
A[1]=1; B[1]=1; C[1]=2; D[1]=14;
A[2]=1; B[2]=1; C[2]=3; D[2]=4;
A[3]=1; B[3]=1; C[3]=4; D[3]=3;
A[4]=1; B[4]=3; C[4]=13; D[4]=2;
A[5]=1; B[5]=4; C[5]=5; D[5]=3;
A[6]=1; B[6]=4; C[6]=13; D[6]=4;
A[7]=1; B[7]=14; C[7]=7; D[7]=2;
A[8]=5; B[8]=7; C[8]=13; D[8]=17;
A[9]=5; B[9]=7; C[9]=13; D[9]=13;
Y=0;
K=0;
PuzzleFini();
getchar();
return 0;
}