elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: Creacion de matriz en: 8 Marzo 2018, 23:42 pm
Muchas gracias! Aprendí mucho  :D
2  Programación / Programación C/C++ / Re: duda en: 8 Marzo 2018, 18:19 pm
Muy chiquita la imagen. No llego a leer nada!
3  Programación / Programación C/C++ / Re: Creacion de matriz en: 8 Marzo 2018, 15:14 pm
Código
  1. func setter_matrix(x, y):  #a esta funcion la llamo desde un for de afuera para setear numeros de 1 a 6 y la entrada(5) y salida(6)
  2. if x == 0 and entrada_creada == false:
  3. randomize()
  4. var n = randi()%5+1
  5. if n == 5:
  6. entrada_creada = true
  7. if y == WIDTH-1:
  8. entrada_creada = true
  9. return 5
  10. return n
  11. elif x == 3 and salida_creada == false:
  12. randomize()
  13. var n2 = randi()%6+1
  14. if n2 == 6:
  15. salida_creada = true
  16. if y == WIDTH-1:
  17. entrada_creada = true
  18. return 6
  19. if n2 == 5:
  20. return 1
  21. return n2
  22. else:
  23. return randi()%4+1
  24.  
  25.  
  26.  
  27.  
  28.  
  29. #Funcion para asegurar que haya: Entrada, Salida y 2/3
  30. func corregir_matrix(matrix):
  31. var encontrado2
  32. var entrada
  33. var bajada
  34. for x in range(WIDTH):
  35. encontrado2 = false
  36. for y in range(HEIGHT):
  37. if x == 0:
  38. if matrix[x][y] == 5:
  39. entrada = y
  40. if x != HEIGHT -1 :
  41. if (matrix[x][y] == 2) and (encontrado2 == false):
  42. matrix[x+1][y] = 3
  43. encontrado2 = true
  44. bajada = y
  45. elif matrix[x][y] == 2 and encontrado2 == true:
  46. matrix[x][y] = 1
  47. elif y == WIDTH-1 and encontrado2 == false:
  48. if x == 0:
  49. if entrada + 2 < WIDTH:
  50. matrix[x][entrada+2] = 2
  51. matrix[x+1][entrada+2] = 3
  52. bajada = entrada + 2
  53. else:
  54. matrix[x][entrada-2] = 2
  55. matrix[x+1][entrada-2] = 3
  56. bajada = entrada - 2
  57. else:
  58. if bajada + 2 < WIDTH:
  59. matrix[x][bajada+2] = 2
  60. matrix[x+1][bajada+2] = 3
  61. bajada = bajada + 2
  62. else:
  63. matrix[x][bajada-2] = 2
  64. matrix[x+1][bajada-2] = 3
  65. bajada = bajada - 2
  66. else:
  67. if matrix[x][y] == 6:
  68. return matrix
  69. for y in range(HEIGHT):
  70. if matrix[3][y] == 3:
  71. if y + 2 < WIDTH:
  72. matrix[3][y+2] = 6
  73. return matrix
  74. else:
  75. matrix[3][y-2] = 6
  76. return matrix
  77. return matrix
  78.  
  79.  
  80.  
  81.  
  82. #Funcion para asegurar que haya unos entre 2/3/5/6
  83. func corregir_matriz_2(matrix):
  84. var entrada
  85. var salida
  86. var bajada1
  87. var bajada2
  88. var aux
  89. for x in range(WIDTH):
  90. for y in range(HEIGHT):
  91. if x == 0:
  92. if matrix[x][y] == 2: ###
  93. bajada1 = y
  94. if matrix[x][y] == 5:
  95. entrada = y
  96. elif x != 0 and x != HEIGHT -1 :
  97. if matrix[x][y] == 2: ###
  98. bajada1 = y
  99. elif matrix[x][y] == 3 and matrix[x-1][y] == 2:
  100. bajada2 = y
  101. else:
  102. if matrix[x][y] == 3 and matrix[x-1][y] == 2:
  103. bajada2 = y
  104. elif matrix[x][y] == 6:
  105. salida = y
  106.  
  107.  
  108. if x == 0:
  109. if bajada1 < entrada:
  110. aux = entrada - (bajada1)
  111. for y in range(aux):
  112. if matrix[x][bajada1+y] == 4:  #Antes: bajada+1 Ahora: bajada+y
  113. matrix[x][bajada1+y] = 1   #Si era + 1 siempre reemplazaba en el mismo lugar
  114. else:
  115. aux = bajada1 - (entrada)
  116. for y in range(aux):
  117. if matrix[x][entrada+y] == 4:
  118. matrix[x][entrada+y] = 1
  119.  
  120. elif x != 0 and x != HEIGHT -1 :
  121. if bajada1 < bajada2:
  122. aux = bajada2 - (bajada1)
  123. for y in range(aux):
  124. if matrix[x][bajada1+y] == 4:
  125. matrix[x][bajada1+y] = 1
  126. else:
  127. aux = bajada1 - (bajada2)
  128. for y in range(aux):
  129. if matrix[x][bajada2+y] == 4:
  130. matrix[x][bajada2+y] = 1
  131.  
  132. else:
  133. if bajada2 < salida:
  134. aux = salida - (bajada2)
  135. for y in range(aux):
  136. if matrix[x][bajada2+y] == 4:
  137. matrix[x][bajada2+y] = 1
  138. else:
  139. aux = bajada2 - (salida)
  140. for y in range(aux):
  141. if matrix[x][salida+y] == 4:
  142. matrix[x][salida+y] = 1
  143. return matrix
  144.  
  145.  


Perdón, es muy feo el código pero funciona. Por eso queria saber si hay una manera mas elegante o mejor de hacerlo. Con pseudocodigo me arreglo!
4  Programación / Programación C/C++ / Creacion de matriz en: 7 Marzo 2018, 23:56 pm
Hola! Soy nueva en la programación y me llego un problema. No se cuál seria la mejor manera de solucionarlo. Hice un código muy largo y no me parece que este bien aunque funcione.
El problema es el siguiente:

Tengo que crear una matriz de numeros ( 1 a 6) con un ancho X y un largo Y.
El array Z0 debe tener un 5  y el Z-1 un 6. Entonces quedaría algo asi:
XXX5XX
XXXXXX
XXXXXX
6XXXXX

La siguiente condición es que en Zx debe existir un 2 y en Zx+1 un 3.

X2X5XX
X3XX2X
XXXX32
6XXXX3

Y la ultima condición es que :
Entre 2/3/6/5 solo puede haber 1.

X215XX
X3112X
XXXX32
611113

Todo lo demas que no fue seteado pueden ser 1 o 4!



El código no es en C pero me serviría igual ver un pseudocodigo! Si hace falta muestro lo que hice pero es muy feo  :-X  
Si es muy largo el pseudocodigo con que me den algún tip se los agradezco!
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines