Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define SRAND_VALUE 1985
- #define dim 2048
- #define ger 2000
- #include <stdio.h>
- #include <stdlib.h>
- int vizinhos(int** matriz, int i, int j)
- {
- int soma=0;
- soma = matriz[i-1][j-1] + matriz[i-1][j] + matriz[i-1][j+1] + matriz[i][j-1] + matriz[i][j+1] + matriz[i+1][j-1] + matriz[i+1][j] + matriz[i+1][j+1];
- if(soma < 2 || ((soma > 3) && (matriz[i][j] = 1)))
- return 0;
- if(soma == 2 || soma == 3 || ((soma = 3) && (matriz[i][j] = 0)))
- return 1;
- return 0;
- }
- int conta(int** matriz)
- {
- int soma = 0, i, j;
- for(i = 1; i < dim+1; i++)
- {
- for(j = 1; j < dim+1; j++)
- {
- soma += matriz[i][j];
- }
- }
- return soma;
- }
- void copiaborda(int** matriz)
- {
- int i, j, k;
- //lin cima
- for(i=1; i<dim+1; i++) //
- {
- matriz[0][i]=matriz[dim][i];
- }
- //lin baixo
- for(i=1; i<dim+1; i++) //j iterado i travado
- {
- matriz[dim+1][i]=matriz[1][i];
- }
- //col direita
- for(i=1; i<dim+1; i++) //j travado i iterado
- {
- matriz[i][dim+1]=matriz[i][1];
- }
- //col esquerda
- for(i=1; i<dim+1; i++) //ok
- {
- matriz[i][0]=matriz[i][dim];
- }
- matriz[0][0]=matriz[dim][dim];
- matriz[0][dim+1]=matriz[dim][1];
- matriz[dim+1][0]=matriz[1][dim];
- matriz[dim+1][dim+1]=matriz[1][1];
- }
- void printar(int** matriz)
- {
- int i, j;
- for(i=0; i<dim+2; i++)
- {
- for(j=0; j<dim+2; j++)
- {
- printf(" %d", matriz[i][j]);
- }
- printf("\n");
- }
- return;
- }
- void desalocamatriz(int** matriz)
- {
- int i, j;
- for(i=0; i<dim+2; i++)
- {
- free(matriz[i]);
- }
- free(matriz);
- return;
- }
- int** alocamatriz()
- {
- int i, j;
- int **matriz = (int**)calloc(dim+2, sizeof(int*));
- for (i = 0; i < dim+2; i++) //Percorre as linhas do Vetor de Ponteiros
- {
- matriz[i] = (int*) calloc(dim+2,sizeof(int)); //Aloca um Vetor de Inteiros para cada posição do Vetor de Ponteiros.
- }
- return(matriz);
- }
- int main()
- {
- int i, j, k;
- int **matriz=alocamatriz();
- int **matriz_nova;
- int** aux;
- ///GERANDO A MATRIZ ALEATÓRIA
- srand(SRAND_VALUE);
- for(i = 1; i<dim+1; i++)
- {
- for(j = 1; j<dim+1; j++)
- {
- matriz[i][j] = rand() % 2;
- }
- }
- printf("Geracao 0: %d\n", conta(matriz));
- system ("pause");
- for(k=0; k<=ger; k++)
- {
- matriz_nova = alocamatriz();
- copiaborda(matriz);
- for(i = 1; i<dim+1; i++)
- {
- for(j = 1; j<dim+1; j++)
- {
- matriz_nova[i][j] = vizinhos(matriz, i, j);
- }
- }
- aux = matriz;
- matriz = matriz_nova;
- desalocamatriz(aux);
- printf("Geracao %d: %d\n", k, conta(matriz));
- }
- desalocamatriz(matriz);
- //desalocamatriz(matriz_nova);
- return(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement