Fourmi de langton C

Sargarmatha Messages postés 51 Date d'inscription   Statut Membre Dernière intervention   -  
Gaunts Messages postés 1125 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

Voila je doit rendre un programme en C mais je ne suis pas très doué en informatique je soit dire. Il s'agit de la fourmi de langton, un automate assez simple qui me pose beaucoup de problème notamment pour la indiquer direction de la fourmi.
Donc si quelqu'un s'y connais un peu et trouve le courage de lire mon début de programme
pour m'aider ce serait très sympa ^^


#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>




// fonction qui genere un tableau de 0

void tableau(int tab[20][20])
{

int i,j;
for (i=1; i<21; i=i+1)
{ printf("\n");
for (j=1; j<21; j=j+1)
{

printf("%d ",tab[i][j]= 0);


}
}
}




//Fonction qui permet de placer la fourmie
int saisie (int tab[20][20])
{
int i,j,;

printf("\n\n\n\n");
printf ("Maintenant vous allez placer la fourmie sur le plateau, pour cela : \n");
printf ("\n Entrez une coordonnee verticale : ");
scanf ("%d", &i);
printf ("\n Puis une coordonnee horizontale : ");
scanf ("%d", &j);

tab[i][j]=5;


}



//fonction qui permet d'afficher le tableau avec les nouvelles coordonnées
void affichage ( int tab[20][20])
{
int i,j,X;
i=j=1;

for (i=1; i<21; i=i+1)
{ printf("\n");

for (j=1; j<21; j=j+1)

if (tab[i][j]==5)
{printf("X ");}
else
{printf("%d ", tab[i][j]);}

}
printf("\n\n\n");

}

//fonction orientation
int orientation ( int tab[20][20])
{
int z,d,nord,ouest,est,sud;
printf ("choississez la direction de votre fourmi : \n");
printf ("\n 1-Nord : ");
printf ("\n 2-Sud : ");
printf ("\n 3-Ouest : ");
printf ("\n 4-est : ");

scanf ("%d", &z);

if (z=1)
d=nord;
if (z=2)
d=sud;
if (z=3)
d=ouest;
if (z=4)
d=est;

return d;
}

// fonction
int deplacement( int tab[20][20],int tab2[20][20])
{
int nord,sud,ouest,est,d;
int i,j;


for (i=1; i<21; i=i+1)
{
for (j=1; j<21; j=j+1)

{ if ((tab[i][j]==5) && (tab2[i][j]==0)&& (d==nord))
{ tab[i][j]=1;
tab2[i][j+1]=5;
tab2[i][j]=1;
d=est;}

else if ((tab[i][j]==5) && (tab2[i][j]==0)&& (d==est))
{ tab[i][j]=1;
tab2[i+1][j]=5;
tab2[i][j]=1;
d=sud;}

else if ((tab[i][j]==5) && (tab2[i][j]==0)&& (d==sud))
{ tab[i][j]=1;
tab2[i][j-1]=5;
tab2[i][j]=1;
d=ouest;}

else if ((tab[i][j]==5) && (tab2[i][j]==0)&& (d==ouest))
{ tab[i][j]=1;
tab2[i-1][j]=5;
tab2[i][j]=1;
d=nord;}

else if ((tab[i][j]==5) && (tab2[i][j]==1) && (d==nord))
{ tab[i][j]=1;
tab2[i][j-1]=5;
tab2[i][j]=1;
d=ouest;
}

else if ((tab[i][j]==5) && (tab2[i][j]==1) && (d==ouest))
{ tab[i][j]=1;
tab2[i+1][j]=5;
tab2[i][j]=1;
d=sud;}

else if ((tab[i][j]==5) && (tab2[i][j]==1) && (d==sud))
{ tab[i][j]=1;
tab2[i][j+1]=5;
tab2[i][j]=1;
d=est;}

else if ((tab[i][j]==5) && (tab2[i][j]==1) && (d==est))
{ tab[i][j]=1;
tab2[i-1][j]=5;
tab2[i][j]=1;
d=nord;}




}
}
return d;
}





// fonction qui echange les valeurs des deux tableaux

void echange(int tab[20][20], int tab2[20][20])
{
int a,b,x=1;



for (a=1; a<21; a=a+1)
{ for (b=1; b<21; b=b+1)
{ x=tab[a][b];
tab[a][b]= tab2[a][b];
tab2[a][b]=x;
}
}
}

//programme principale
main ()

{


printf(" -=> Bienvenu dans l'automate de la Fourmi de Langton <=-" );
printf("\n\n\n\n\n\n" );

int b,i,j,n,e,d,nord;
int s=0;
int a=0;
int tab[20][20];
int tab2[20][20];
d=nord;

tableau(tab);
tableau(tab2);
saisie (tab);
d=orientation (tab);
affichage(tab);
deplacement(tab,tab2);
echange(tab,tab2);
affichage(tab);

printf ("\n voulez vous afficher l'etat suivant ? ");
printf ("\n si oui, tapez 1 ");
printf ("\n sinon, tapez 2 ");
scanf ("%d", &e);



while (s!=2)
{
printf("%d ",s);
d=deplacement(tab,tab2);;
echange(tab,tab2);
deplacement(tab,tab2);
affichage(tab);


printf ("\n voulez vous afficher l'etat suivant ? ");
printf ("\n si oui, tapez 1 ");
printf ("\n sinon, tapez 2 ");
scanf ("%d", &e);

}


//while (a!=1)
//{
//printf("1- \n\n" );
//printf("Voulez vous jouer avec ce tableau ou en generer un nouveau ? \n\n" );
//printf(" 1- Jouer \n" );
//printf(" 2- Generer un nouveau tableau ? \n" );
//scanf("%d",&a);
//
//
// aleatoire(tab);
// }




printf("\n tapez une lettre pour quitter le programme");
scanf("%d",&b);



}


1 réponse

Gaunts Messages postés 1125 Date d'inscription   Statut Membre Dernière intervention   116
 
Salut,

Tu peux reposter ton code avec les balises < code> < /code> stp?
Ensuite, quelle est exactement ta question?

Cordialement
-1