Advertisement
Guest User

Untitled

a guest
Aug 23rd, 2019
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.98 KB | None | 0 0
  1. #define SRAND_VALUE 1985
  2. #define dim 2048
  3. #define ger 2000
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6.  
  7. int vizinhos(int** matriz, int i, int j)
  8. {
  9. int soma=0;
  10.  
  11. 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];
  12.  
  13. if(soma < 2 || ((soma > 3) && (matriz[i][j] = 1)))
  14. return 0;
  15. if(soma == 2 || soma == 3 || ((soma = 3) && (matriz[i][j] = 0)))
  16. return 1;
  17.  
  18. return 0;
  19. }
  20.  
  21.  
  22. int conta(int** matriz)
  23. {
  24. int soma = 0, i, j;
  25.  
  26. for(i = 1; i < dim+1; i++)
  27. {
  28. for(j = 1; j < dim+1; j++)
  29. {
  30. soma += matriz[i][j];
  31. }
  32. }
  33. return soma;
  34. }
  35.  
  36.  
  37. void copiaborda(int** matriz)
  38. {
  39. int i, j, k;
  40.  
  41. //lin cima
  42. for(i=1; i<dim+1; i++) //
  43. {
  44. matriz[0][i]=matriz[dim][i];
  45. }
  46. //lin baixo
  47. for(i=1; i<dim+1; i++) //j iterado i travado
  48. {
  49. matriz[dim+1][i]=matriz[1][i];
  50. }
  51. //col direita
  52. for(i=1; i<dim+1; i++) //j travado i iterado
  53. {
  54. matriz[i][dim+1]=matriz[i][1];
  55. }
  56.  
  57. //col esquerda
  58. for(i=1; i<dim+1; i++) //ok
  59. {
  60. matriz[i][0]=matriz[i][dim];
  61. }
  62.  
  63. matriz[0][0]=matriz[dim][dim];
  64. matriz[0][dim+1]=matriz[dim][1];
  65. matriz[dim+1][0]=matriz[1][dim];
  66. matriz[dim+1][dim+1]=matriz[1][1];
  67.  
  68. }
  69.  
  70.  
  71. void printar(int** matriz)
  72. {
  73. int i, j;
  74.  
  75. for(i=0; i<dim+2; i++)
  76. {
  77. for(j=0; j<dim+2; j++)
  78. {
  79. printf(" %d", matriz[i][j]);
  80.  
  81. }
  82. printf("\n");
  83. }
  84. return;
  85.  
  86. }
  87.  
  88.  
  89. void desalocamatriz(int** matriz)
  90. {
  91. int i, j;
  92.  
  93. for(i=0; i<dim+2; i++)
  94. {
  95. free(matriz[i]);
  96. }
  97.  
  98. free(matriz);
  99.  
  100. return;
  101. }
  102.  
  103.  
  104. int** alocamatriz()
  105. {
  106. int i, j;
  107. int **matriz = (int**)calloc(dim+2, sizeof(int*));
  108. for (i = 0; i < dim+2; i++) //Percorre as linhas do Vetor de Ponteiros
  109. {
  110. matriz[i] = (int*) calloc(dim+2,sizeof(int)); //Aloca um Vetor de Inteiros para cada posição do Vetor de Ponteiros.
  111. }
  112.  
  113.  
  114. return(matriz);
  115. }
  116.  
  117. int main()
  118. {
  119. int i, j, k;
  120. int **matriz=alocamatriz();
  121. int **matriz_nova;
  122. int** aux;
  123.  
  124. ///GERANDO A MATRIZ ALEATÓRIA
  125. srand(SRAND_VALUE);
  126. for(i = 1; i<dim+1; i++)
  127. {
  128. for(j = 1; j<dim+1; j++)
  129. {
  130. matriz[i][j] = rand() % 2;
  131. }
  132. }
  133.  
  134. printf("Geracao 0: %d\n", conta(matriz));
  135. system ("pause");
  136. for(k=0; k<=ger; k++)
  137. {
  138. matriz_nova = alocamatriz();
  139. copiaborda(matriz);
  140.  
  141. for(i = 1; i<dim+1; i++)
  142. {
  143. for(j = 1; j<dim+1; j++)
  144. {
  145. matriz_nova[i][j] = vizinhos(matriz, i, j);
  146. }
  147. }
  148. aux = matriz;
  149. matriz = matriz_nova;
  150. desalocamatriz(aux);
  151.  
  152. printf("Geracao %d: %d\n", k, conta(matriz));
  153. }
  154.  
  155. desalocamatriz(matriz);
  156. //desalocamatriz(matriz_nova);
  157.  
  158. return(0);
  159. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement