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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: [Ayuda] Punteros y Arrays en C en: 16 Enero 2013, 21:52 pm
Hola a todos:

Muchas gracias  los que lo habéis intentado, he estado toda la tarde y he podido resolver parte del código, os dejo lo dejo puesto para que lo veáis.

Ahora mi problema surge en otro punto, una vez que el robot llega al "2" no se lo come, si no que se pone a saltarlo de un lado a otro.

Cualquier ayuda sera bienvenida. Gracias a todos.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void mostrar(int m[3][3]) {
  5. int i, j;
  6.  
  7. for(i=0; i<3; i++){
  8. for(j=0; j<3; j++){
  9. printf("%d ", m[i][j]);
  10. }
  11. printf("\n");
  12. }
  13. printf("\n");
  14. }
  15. void buscar(int m[3][3], int *Xc, int *Yc, int *X1, int *Y1, int *X2, int *Y2, int *X3, int *Y3, int *X4, int *Y4){
  16. int i,j;
  17.  
  18. for(i=0; i<3; i++){
  19. for(j=0; j<3; j++){
  20. if (m[i][j]==2){
  21. *Xc = i;
  22. *Yc = j;
  23. }
  24. if (m[i][j]==3){
  25. *X1 = i+1;
  26. *Y1 = j;
  27. *X2 = i-1;
  28. *Y2 = j;
  29. *X3 = i;
  30. *Y3 = j+1;
  31. *X4 = i;
  32. *Y4 = j-1;
  33. }
  34. }
  35. }
  36.  
  37. }
  38. int calcularPasos(int Xc, int Yc, int X, int Y){
  39. int XT, YT, steps;
  40.  
  41. if (Xc>=X){
  42. XT = Xc-X;
  43. }else if(X>=Xc){
  44. XT = X-Xc;
  45. }
  46. if (Yc>=Y){
  47. YT = Yc-Y;
  48. }else if(Y>=Yc){
  49. YT = Y-Yc;
  50. }
  51. steps = XT+YT;
  52.  
  53. return steps;
  54. }
  55.  
  56. void movimientoTorre(int steps1, int steps2, int steps3, int steps4, int m[3][3]){
  57. int aux;
  58. int i, j;
  59. int *pCaux, *pRaux, *p1aux, *p2aux, *p3aux, *p4aux;
  60.  
  61. for(i=0; i<3; i++){
  62. for(j=0; j<3; j++){
  63. if (m[i][j]==2){
  64. pCaux = &m[i][j];
  65. }
  66. if (m[i][j]==3){
  67. pRaux = &m[i][j];
  68. p1aux = &m[i+1][j];
  69. p2aux = &m[i-1][j];
  70. p3aux = &m[i][j+1];
  71. p4aux = &m[i][j-1];
  72. }
  73. }
  74. }
  75.  
  76. if(steps1<=steps2 && steps1<=steps3 && steps1<=steps4){
  77. aux = *p1aux;
  78. *p1aux = *pRaux;
  79. *pRaux = aux;
  80. } else if(steps2<=steps1 && steps2<=steps3 && steps2<=steps4){
  81. aux = *p2aux;
  82. *p2aux = *pRaux;
  83. *pRaux = aux;
  84. } else if(steps3<=steps2 && steps3<=steps1 && steps3<=steps4){
  85. aux = *p3aux;
  86. *p3aux = *pRaux;
  87. *pRaux = aux;
  88. } else if(steps4<=steps2 && steps4<=steps3 && steps4<=steps1){
  89. aux = *p4aux;
  90. *p4aux = *pRaux;
  91. *pRaux = aux;
  92. }
  93.  
  94.  
  95. }
  96.  
  97. int main () {
  98. int m[3][3] = { {0, 2, 0},
  99. {0, 0, 0},
  100. {0, 0, 3}};
  101. int Xc, Yc, X1, Y1, X2, Y2, X3, Y3, X4, Y4;
  102. int steps1, steps2, steps3, steps4;
  103.  
  104. //INICIALIZACION
  105. mostrar(m);
  106.  
  107. //BUSCAR
  108. buscar(m, &Xc, &Yc, &X1, &Y1, &X2, &Y2, &X3, &Y3, &X4, &Y4);
  109.  
  110. //CALCULAR PASOS
  111. steps1 = calcularPasos(Xc, Yc, X1, Y1);
  112. steps2 = calcularPasos(Xc, Yc, X2, Y2);
  113. steps3 = calcularPasos(Xc, Yc, X3, Y3);
  114. steps4 = calcularPasos(Xc, Yc, X4, Y4);
  115.  
  116. //REALIZAR MOVIMIENTO
  117. movimientoTorre(steps1, steps2, steps3, steps4, m);
  118.  
  119. //MOSTRAR RESULTADO
  120. mostrar(m);
  121.  
  122. }


PD: edito el titulo del post para que no haya confusiones.
2  Programación / Programación C/C++ / Re: [Ayuda] Punteros y Arrays en C en: 16 Enero 2013, 19:53 pm
Mi idea era que avanzase hacia arriba hasta llegar al dos y luego se lo "comiera" quedando un cinco solo en la matriz.
3  Programación / Programación C/C++ / Re: [Ayuda] Punteros y Arrays en C en: 16 Enero 2013, 18:02 pm
Lo primero gracias por tu ayuda, he estado mirando el ejemplo que me has puesto y me has ayudado a comprender unas cosas que faltaban.

Lo segundo, tal vez no me he expresado bien al hacer la pregunta, lo que quiero hacer, o tengo en mente, es mover el 3 de la matriz de uno en uno hasta el dos y luego sumarselo de tal forma que al final me quede una matriz con todos ceros excepto en la posición del dos, que me quedara un cinco.
4  Programación / Programación C/C++ / [Ayuda] Programa con Punteros en C en: 16 Enero 2013, 13:26 pm
Hola a todos:

Vereis llevo un par de dias comiendome la cabeza con los punteros y los arrays y no consigo sacar el codigo.

El problema en cuestion: Tengo un array bidimensional (una matriz) y apunto un puntero a un valor, yo lo que quiero es poder desplazar ese valor por la matriz pero no lo consigo. El movimiento tiene que hacerse de uno en uno. Es decir de una casilla en una casilla, no puede ir saltando.

Mi pregunta es: ¿Como puedo desplazar un puntero por un array bidimensional?

Este problema se plantea porque necesito hacer un programa que desplace un "robot" por una cerca y llegue hasta una carga y la absorba para despues llevarla a los almacenes que serian las esquinas de la matriz.

Hasta ahora tengo esto:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void mostrar(int m[3][3]) {
  5. int i, j;
  6.  
  7. for(i=0; i<3; i++){
  8. for(j=0; j<3; j++){
  9. printf("%d ", m[i][j]);
  10. }
  11. printf("\n");
  12. }
  13. printf("\n");
  14. }
  15.  
  16. int main () {
  17. int m[3][3] = {0, 2, 0, 0, 0, 0, 0, 0, 3};
  18. int *pC, *pR;
  19. int i, j;
  20.  
  21. mostrar(m);
  22.  
  23. for(i=0; i<3; i++){
  24. for(j=0; j<3; j++){
  25. if (m[i][j]==2){
  26. pC = &m[i][j];
  27. }
  28. if (m[i][j]==3){
  29. pR = &m[i][j];
  30. }
  31. }
  32. }
  33.  
  34. mostrar(m);
  35.  
  36. }
  37.  

Muchas gracias por adelantado.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines