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 -
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);
}
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);
}
A voir également:
- Fourmi de langton C
- Les Fourmis : après la saga culte de Bernard Werber, le jeu vidéo ! - Accueil - Guide jeu vidéo
- Cet ingrédient de cuisine fait fuir les mouches et les fourmis : c'est un répulsif naturel redoutable - Guide