Probleme projet en C

Fermé
lokhi - 1 nov. 2008 à 13:11
 lokhi - 2 nov. 2008 à 16:07
Bonjour,
Je poste ici car j'ai un problème avec mon programme C.
J'ai comme projet de "créer" le jeu de la vie ( https://fr.wikipedia.org/wiki/Jeu_de_la_vie )
Mais les génération que j'affiche sont toujours identique a celle de départ comme si la modification effectué dans la procédure n'était pas prise en compte.
Pouvez vous m'indiquez ce qui cloche s'il vous plait?

voici mon code :


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154



//Creation de la matrice et remplissage random
void creamatrice(int uneMat[50][50],int unNbL, int unNbC)
{

int l,c;
for (l=1;l<unNbL;l++)
{
for (c=1;c<unNbC;c++)
{
uneMat[l][c]=rand()%2;
}
}
for(l=0;l<unNbL;l++)
{
uneMat[l][0]=0;
uneMat[l][unNbC-1]=0;
}
for(c=0;c<unNbC;c++)
{
uneMat[0][c]=0;

uneMat[unNbL-1][c]=0;
}


}





//Affiche la matrice
void affichemat(int uneMat[50][50], int unNbL, int unNbC)
{
int l,c;
for (l=0;l<unNbL;l++)
{
for (c=0;c<unNbC;c++)
{
printf("%d ",uneMat[l][c]);
}
printf("\n");
}
printf("\n");
}

//copie la Mat1 dans la Mat2
int copie(int uneMat1[50][50],int uneMat2[50][50], int unNbL, int unNbC)
{
int l,c;

for (l=1;l<unNbL-2;l++)
{
for (c=l;c<unNbC-2;c++)
{
uneMat1[l][c]=uneMat2[l][c];
}
}
return uneMat1[l][c];
}



//compte le nombre de 1 dans les 8 cellules voisines dans la matrice de calcul
//et suit les regles du jeu en copiant le resultat dans la matrice a afficher

void compte_effectue(int uneMatA[50][50],int uneMatC[50][50], int unNbL, int unNbC)
{


int leCpt=0;
int l,c;
for (l=1;l<(unNbL-2);l++)

{
for (c=l;c<(unNbC-2);c++)
{
if(uneMatC[l-1][c-1]==1)
leCpt++;
if(uneMatC[l-1][c]==1)
leCpt++;
if(uneMatC[l-1][c+1]==1)
leCpt++;
if(uneMatC[l][c-1]==1)
leCpt++;
if(uneMatC[l][c+1]==1)
leCpt++;
if(uneMatC[l+1][c-1]==1)
leCpt++;
if(uneMatC[l+1][c]==1)
leCpt++;
if(uneMatC[l+1][c+1]==1)
leCpt++;
if(uneMatC[l][c]==0)
{
if(leCpt==3)
uneMatA[l][c]=1;
}
else if(leCpt<2 || leCpt>=4)
uneMatA[l][c]=0;
}
}




}





void main ()
{


int laMatA[50][50], laMatC[50][50];

int leNbL, leNbC, leNbG,i;


echange(&a,&b);

printf("%d",a);

srand(time(NULL));

printf("\t\t\t######################\n\t\t\t## Le Jeu de la Vie ##\n\t\t\t######################\n");

/* le MENU a mettre*/

printf("Saisir le nombre de lignes de la matrice: ");
scanf("%d", &leNbL);

printf("Saisir le nombre de colonnes de la matrice: ");
scanf("%d", &leNbC);

printf("Saisir le nombre de generations que vous voulez voir: ");
scanf("%d", &leNbG);

creamatrice(laMatA, leNbL, leNbC);

for(i=0;i<leNbG;i++)
{
copie(laMatA, laMatC, leNbL, leNbC);

compte_effectue(laMatA,laMatC, leNbL, leNbC);

affichemat(laMatA, leNbL, leNbC);

getch();
}

}


merci.
A voir également:

1 réponse

up
0