fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5.  
  6.  
  7. int main()
  8. {
  9. int i,j,k,n,l,i2,j2,sitio,groupn,p,sitioperco,npercol; // Definção de variaveis
  10. srand(time(NULL)); //Comando utilizado para ser realmente randomico
  11. k = 2; //Numero do grupo
  12. npercol = 0;
  13. sitioperco = 0;
  14. p = 600; //Probabilidade de ser verdadeiro
  15. sitio = 0; //Numero de sitios ocupado
  16. n = 6; // tamanho da matriz quadrada
  17. int matriz[n+1][n+1]; // Definição da matriz quadrada
  18. for (i=0;i<n;i++) //mudar as linhas
  19. for (j=0;j<n;j++) //mudar as colunas
  20. {
  21. matriz[i][j] = rand() % 1001; //Alimentando a matriz com os numeros aleatorios
  22. if(matriz[i][j] < p) //Vendo se surgira uma passagem ou não
  23. {
  24.  
  25. matriz[i][j] = 1; //Tem um sitio ocupado
  26. }
  27. else
  28. matriz [i][j] = 0; //Não tem sitio ocupado
  29. }
  30. matriz [0][0] = 0;
  31.  
  32. for (j=0;j<n+1;j++){
  33. matriz [j][n+1] = 0;
  34. }
  35. for (j=0;j<n+1;j++){
  36. matriz [n+1][j] = 0;
  37. }
  38. for (i=1;i<n;i++){
  39. for (j=1;j<n;j++){
  40. if (matriz [i][j] == 1)
  41. {
  42. sitio = sitio +1;
  43. }
  44. }
  45. }
  46. printf("numero de sitios ocupados:%.2d\n",sitio); // imprime o numero de sitios ocupados
  47. k = 1;
  48. /* for (i=0;i<n+1;i++){
  49.   for (j=0;j<n+1;j++)
  50.   {
  51.   printf ("(%d)",matriz[i][j]);
  52.   }
  53.   printf("\n");
  54.   } */
  55. for (i=1;i<n+1;i++){
  56. for (j=1;j<n+1;j++){
  57. if (matriz [i][j] == 1)
  58. {
  59. matriz [i][j] = k;
  60.  
  61. }
  62.  
  63. /* if (matriz [0][j] == 1){
  64.   matriz [0][j] = k+1;
  65.   }*/
  66. else{
  67. k = k+1;
  68. matriz [i][j] = 0;
  69. }
  70.  
  71. }
  72. }
  73. /* printf(" \n matriz \n");
  74.   for (i=1;i<n;i++){
  75.   for(j=1;j<n;j++){
  76.   printf ("(%d)",matriz[i][j]);
  77.   }
  78.   printf ("\n");
  79.   }
  80.   printf ("nova matriz \n"); */
  81. for (i=1;i<n;i++){
  82. for(j=1;j<n;j++){
  83. if (matriz [i][j] != 0 && matriz [i+1][j] != 0){ // ta certo;(troca os numeros para baixo)
  84. for(i2=0;i2<n;i2++){
  85. for(j2=0;j2<n;j2++){
  86. if(matriz [i2][j2] == matriz [i+1][j]){
  87. matriz [i2][j2] = matriz [i][j];
  88. matriz [i+1][j] = matriz [i][j];
  89. }
  90. }
  91. }
  92. }
  93. }
  94. }
  95. /* for (i=1;i<n;i++){
  96.   for (j=1;j<n;j++)
  97.   {
  98.   printf ("(%d)",matriz[i][j]);
  99.   }
  100.   printf("\n");
  101.   } */
  102. for (j=1;j<n;j++){ // troca os numeros para direita
  103. for(i=1;i<n;i++){
  104. if (matriz [i][j] != 0 && matriz [i][j+1] != 0){
  105. for(i2=0;i2<n;i2++){
  106. for(j2=0;j2<n;j2++){
  107. if(matriz [i2][j2] == matriz [i][j+1]){
  108. matriz [i2][j2] = matriz [i][j];
  109. matriz [i][j+1] = matriz [i][j];
  110. }
  111. }
  112. }
  113. }
  114. }
  115. }
  116. /*printf ("\n pos primeira mudança \n");
  117.   for (i=1;i<n;i++){
  118.   for(j=1;j<n;j++){
  119.   printf("(%d)",matriz[i][j]);
  120.   }
  121.   printf ("\n");
  122.   } */
  123. for (i=1;i<n;i++){
  124. for(j=1;j<n;j++){
  125. if (matriz [i][j] != 0 && matriz [i+1][j] != 0){ // ta certo;(troca os numeros para baixo)
  126. for(i2=0;i2<n;i2++){
  127. for(j2=0;j2<n;j2++){
  128. if(matriz [i2][j2] == matriz [i+1][j]){
  129. matriz [i2][j2] = matriz [i][j];
  130. matriz [i+1][j] = matriz [i][j];
  131. }
  132. }
  133. }
  134. }
  135. }
  136. }
  137. for (j=1;j<n;j++){ // troca os numeros para direita
  138. for(i=1;i<n;i++){
  139. if (matriz [i][j] != 0 && matriz [i][j+1] != 0){
  140. for(i2=0;i2<n;i2++){
  141. for(j2=0;j2<n;j2++){
  142. if(matriz [i2][j2] == matriz [i][j+1]){
  143. matriz [i2][j2] = matriz [i][j];
  144. matriz [i][j+1] = matriz [i][j];
  145. }
  146. }
  147. }
  148. }
  149. }
  150. }
  151. printf ("\n pos primeira mudança \n");
  152. for (i=1;i<n;i++){
  153. for(j=1;j<n;j++){
  154. printf("(%d)",matriz[i][j]);
  155. }
  156. printf ("\n");
  157. }
  158. groupn = 0;
  159. for (l=1;l<k;l++){
  160. for (i=1;i<n;i++){
  161. for (j=1;j<n;j++){
  162. if((matriz [1][i] == l) && (matriz [n-1][j] == l)){
  163. groupn = l;
  164. }
  165.  
  166. if ((matriz [i][1] == l) && (matriz [j][n-1] == l)){
  167. groupn = l;
  168. }
  169. }
  170. }
  171. if (groupn == l){
  172. for (i2=1;i2<n;i2++){
  173. for (j2=1;j2<n;j2++){
  174. if (matriz[i2][j2] == groupn){
  175. sitioperco = sitioperco +1;
  176. }
  177. }
  178. }
  179. }}
  180.  
  181. printf("\n %d",groupn);
  182. if (groupn !=0 ){
  183. npercol = npercol +1;
  184. }
  185. printf ("\n %d",npercol);
  186. printf ("\n %d",sitioperco);
  187. return 0;
  188. }
  189.  
Success #stdin #stdout 0s 3468KB
stdin
Standard input is empty
stdout
numero de sitios ocupados:17

 pos primeira mudança 
(0)(2)(0)(2)(2)
(0)(2)(2)(2)(2)
(0)(2)(2)(2)(2)
(8)(0)(2)(0)(2)
(0)(2)(2)(2)(0)

 2
 1
 16