Fourmi de langton C

Fermé
Sargarmatha Messages postés 51 Date d'inscription jeudi 8 mai 2008 Statut Membre Dernière intervention 7 décembre 2016 - Modifié par Sargarmatha le 2/12/2010 à 22:33
Gaunts Messages postés 1125 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 18 mars 2012 - 3 déc. 2010 à 10:31
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 mardi 10 août 2010 Statut Membre Dernière intervention 18 mars 2012 116
3 déc. 2010 à 10:31
Salut,

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

Cordialement
-1