Automato Celular em C/C++

1 resposta
c
J

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");

}

}

1 Resposta

D

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.

Criado 22 de julho de 2022
Ultima resposta 26 de jul. de 2022
Respostas 1
Participantes 2