Automato Celular em C/C++

Turma, boa tarde!
Quem puder me ajudar eu agradeço muito

esse é o trabalho e eu comecei com o codigo fazendo as celulas vizinhas assumirem valor dois, mas aparentemente nao esta dando certo… Alguem me salva nesse trabalho por favor!!!

#include <stdio.h>
int escreve( int n[5][5] );
int main()
{
int j = 0;
int i = 0;
int n [5][5] =
{
0 , 0 , 0 , 0 , 0 ,
0 , 0 , 0 , 2 , 0 , /// 2 = preta
0 , 0 , 0 , 0 , 0 , /// 0 = branco
0 , 0 , 0 , 0 , 0 , /// 1 = cinza
0 , 0 , 0 , 0 , 0//
};
escreve( n );
for( i=0; i<5; i++ )
{
for ( j=0; j<5; j++ )
{
if( n[i][j] == 2 )
{
n[i ][j] = 1;
if(i>0) n[i-1][j] = 2;
if(i<5) n[i+1][j] = 2;
if(j>0) n[i][j-1] = 2;
if(j<5) n[i][j+1] = 2;
i = 5;
break;
}
}
}
escreve( n );
return 0;
}
int escreve( int n[5][5] )
{
int j,i;
printf("\n");
for( i=0; i<5; i++ )
{
for ( j=0; j<5; j++ )
{
printf("%3d" , n[i][j] );
}
printf("\n");
}
}

O pulo do gato é saber se em T-1 houve mudança de estado em alguma célula do reticulado. T=0 é trivial. Para gerar T=1, em outro array de duas dimensões, percorra o array original e SOMENTE em células no estado 2 excite as vizinhas. A mudança das vizinhas vai depender de como elas estavam em T=0 (que é o T-1). Uma célula só vai mudar se em T-1 ela estava em descanso E só vai propagar mudanças se ela não mudou de um estado para outro. Não vi seu código, mas provavelmente seu erro é justamente esse. Vc percorre o array e propaga as mudanças antes da hora.

1 curtida