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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema contador en C
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 [2] 3 Ir Abajo Respuesta Imprimir
Autor Tema: Problema contador en C  (Leído 9,724 veces)
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Problema contador en C
« Respuesta #10 en: 2 Marzo 2014, 20:25 pm »

.............................................................
Tengo esto:

............................................................................
Pero al compilar me sigue dando la tabla igual, no me cambia los valores, por tanto creo que el fallo está aquí:

Código
  1.  i=columna,j=fila;  
  2.  
  3.   if (matriu[i][j] = 0)
  4.     matriu[i][j] = 1;
  5.    else matriu[i][j] = 0;
  6.  

Como lo puedo solucionar???

Están mal comparados en los if, ya que asignas con un solo =, en lugar de comparar al usar dos ==:

Citar
if (matriu[i ][j] == 0)
       matriu[i ][j] = 1;
    else matriu[i ][j] ==0;
<==esta línea sobra, ya era cero

De todas formas, cuelga el código que llevas hecho, matriz incluida, si no es difícil ver los errores.

¡¡¡¡ Saluditos! ..... !!!!





« Última modificación: 2 Marzo 2014, 21:07 pm por leosansan » En línea

People95

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Problema contador en C
« Respuesta #11 en: 2 Marzo 2014, 20:32 pm »

Aún cambiandolo me sigue sin cambiarse :S

Esto es todo el programa entero:

Pero el problema es a partir del void cambiartabla

Código
  1. #include <stdio.h>
  2.  
  3. void imprimir (int matriu[50][50]);
  4. void pelota (int matriu[50][50]);
  5. void cambiartabla (int matriu[50][50]);
  6.  
  7. int main()
  8. {
  9. int num,inicio,i,j,cont=0,fila,columna,error=0;
  10. char direccion;
  11.  
  12. int matriu[50][50]={
  13. {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  14. {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0},
  15. {0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0},  
  16. {0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0},  
  17. {0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0},  
  18. {0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  19. {0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  20. {0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},  
  21. {0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},  
  22. {0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  23. {0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  24. {0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  25. {0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},  
  26. {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},  
  27. {0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},  
  28. {0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  29. {0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  30. {0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},  
  31. {0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},  
  32. {0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  33. {0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  34. {0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0},
  35. {0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},  
  36. {0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},  
  37. {0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},  
  38. {0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  39. {0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  40. {0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},  
  41. {0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},  
  42. {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  43. {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  44. {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  45. {0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},  
  46. {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},  
  47. {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},  
  48. {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  49. {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  50. {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},  
  51. {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},  
  52. {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  53. {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  54. {0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  55. {0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},  
  56. {0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},  
  57. {0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},  
  58. {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  59. {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  60. {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},  
  61. {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},  
  62. {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  63. };
  64.  
  65. while(num!=5)
  66. {
  67. printf("\n");
  68.        printf("Que acción desea realizar:\n");
  69. printf("\t1.- Mostrar la tabla.\n");
  70. printf("\t2.- Tirar una bola.\n");
  71. printf("\t3.- Tirar 20 bolas.\n");
  72. printf("\t4.- Cambiar la tabla.\n");
  73. printf("\t5.- Salida.\n");
  74.  
  75. scanf("%d",&num);
  76.  
  77. switch(num)
  78. {
  79. case 1:
  80.  
  81. imprimir (matriu);
  82. break;
  83.  
  84.  
  85. case 2:
  86. pelota (matriu);
  87. break;
  88.  
  89.  
  90. case 3:
  91. printf("caso 3\n");
  92. break;
  93.  
  94.  
  95. case 4:
  96. cambiartabla (matriu);
  97. break;
  98.  
  99.  
  100. case 5:
  101. printf("Adios.\n");
  102. printf("\n");
  103. break;
  104.  
  105.  
  106. default:
  107. printf("El numero introducido no pertenece al menú, intentelo de nuevo.\n");
  108.  
  109.  
  110. }
  111. }
  112. }
  113.  
  114.  
  115. void imprimir (int matriu[50][50]){
  116. int i,j;
  117.  
  118. for (i = 0; i < 50; i++){
  119. for (j = 0; j < 50; j++){
  120.  
  121.  
  122. if(matriu[i][j]==1)
  123.           printf("X",matriu[i][j]);
  124.     else
  125.                 printf(".",matriu[i][j]);        
  126.  
  127. }
  128. printf ("\n");
  129. }}
  130.  
  131. void pelota (int matriu[50][50]){
  132.  
  133. int inicio,i,j,cont=0;
  134. char direccion;
  135.  
  136. do{
  137.    printf("\nIntroducir el numero de columna por el cual desea lanzar la primera bola (1-50): ");
  138.    scanf("%d",&inicio);
  139.  }while(inicio>=51);
  140.  inicio--;
  141.  
  142.  do{
  143.    printf("\nEn caso de encontrarse con un obstaculo, en que direccion\n quiere que se dirija la bola, derecha (D-d) o izquierda (I-i): ");
  144.    scanf(" %c", &direccion);
  145.  }while(direccion!='D' && direccion!='d' && direccion!='I' && direccion!='i');
  146.  
  147.  i=0,j=inicio,cont=2;
  148.  matriu[i][j]=cont++;
  149.  
  150.  while(i<49){
  151.  
  152.    if (j==-1)
  153.    matriu[i][++j]=cont++;
  154. else if (j==50)
  155.  matriu[i][--j]=cont++;
  156.    else if (matriu[i+1][j]==0)
  157.      matriu[++i][j]=cont++;
  158.    else if (direccion=='D' || direccion=='d' && matriu[i][j+1]==0 )
  159.      matriu[i][++j]=cont++;
  160.    else if (direccion=='D' || direccion=='d' && matriu[i][j+1]==1 )
  161.      matriu[i][--j]=cont++;
  162.    else if (direccion=='I' || direccion=='i' && matriu[i][j-1]==0)
  163.      matriu[i][--j]=cont++;
  164.    else if (direccion=='I' || direccion=='i' && matriu[i][j-1]==1)
  165.      matriu[i][++j]=cont++;
  166.  }
  167.  
  168.  for(i=0;i<50;i++)
  169.  {
  170.     printf("\t\t");
  171.     for(j=0;j<50;j++)
  172.      {
  173.         if(matriu[i][j]==1)
  174.            printf("X ");
  175.         else if(matriu[i][j]==0 )
  176.            printf(". ");
  177.         else
  178.            printf("%d ",matriu[i][j]-2);
  179.     }
  180.     printf("\n");
  181.  }
  182. }
  183.  
  184.  
  185. void cambiartabla (int matriu[50][50]){
  186.  
  187. int i,j,fila,columna,error=0;
  188. char seguir;
  189.  
  190. while(seguir!=2)
  191. {
  192. printf("\n");
  193.        printf("Presiona 1 si quieres seguir cambiando valores.\n");
  194. printf("Presiona 2 si quieres ver la tabla.\n");
  195.  
  196. scanf("%d",&seguir);
  197.  
  198. switch(seguir)
  199. {
  200. case 1:
  201.  
  202. do{
  203.   printf("\nIntroducir la fila del valor que quieres cambiar (1-50): ");
  204.     scanf("%d",&columna);
  205.   printf("\nIntroducir la columna del valor que quieres cambiar (1-50): ");
  206.   scanf("%d",&fila);
  207. }while(columna>=51 && fila>=51);
  208. break;
  209.  
  210. default:
  211. printf("El numero introducido es incorrecto.\n");
  212.  
  213. }
  214. }
  215.  
  216.  
  217.  i=columna,j=fila;  
  218.  
  219.   if (matriu[i][j] == 0)
  220.     matriu[i][j] == 1;
  221.    else matriu[i][j] = 0;
  222.  
  223.  
  224.  while(i<49){
  225.  
  226.    if (matriu[i+1][j]==1 && matriu[i-1][j]==1 && matriu[i][j-1]==1)
  227. printf("ERROR");
  228. error=1;
  229. break;
  230.  }
  231.  
  232.  for(i=0;i<50;i++)
  233.  {
  234.     printf("\t\t");
  235.     for(j=0;j<50;j++)
  236.      {
  237.         if(matriu[i][j]==1)
  238.            printf("X");
  239.         else if(matriu[i][j]==0 )
  240.            printf(".");
  241.     }
  242.     printf("\n");
  243.  }
  244. }

De nuevo gracias!!!


En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Problema contador en C
« Respuesta #12 en: 2 Marzo 2014, 21:06 pm »



Aquí está la solución, era como te comenté un problema de comparar en el if, con dos iguales y de asignar después con un solo igual y sobra el "else" que sigue:

Código
  1.  
  2. ........................................
  3.  i=columna,j=fila;
  4.  
  5.   if (matriu[i][j] == 0)
  6.     matriu[i][j] = 1;
  7. ..........................................
  8.  
  9.  

¡¡¡¡ Saluditos! ..... !!!!


En línea

People95

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Problema contador en C
« Respuesta #13 en: 2 Marzo 2014, 21:47 pm »

Me sigue saliendo mal, exactamante...

Si pongo por ejemplo
Fila ---> 5
Columna ---> 15

La columna me saldrá bien, cambiará el valor en a columna 15, pero la fila siempre me sale la primera, o directamente no me sale.

Mirad, aquí he puesto las coordenadas [50,50]:



Pero me sale en el [0,50] :S


Y otra cosa que me doy cuenta que falla, al poner varios cambios de valor, los antiguos se me borran, solo cambia el ultimo valor que he introducido.

Definitivamente, la programación no es lo mio jjaja
« Última modificación: 2 Marzo 2014, 22:21 pm por People95 » En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Problema contador en C
« Respuesta #14 en: 2 Marzo 2014, 22:36 pm »


Era por una mala "colocación" de las instrucciones:

Código
  1. ´´´´´´´´´´´´´´´´´´´´´
  2.     }while(columna>=51 && fila>=51);
  3.          i=columna,j=fila;
  4.          if (matriu[i][j] == 0)
  5.            matriu[i][j] = 1;
  6.          break;
  7. case 2:
  8.  while(i<49){
  9.            if (matriu[i+1][j]==1 && matriu[i-1][j]==1 && matriu[i][j-1]==1)
  10.              printf("ERROR");
  11.            error=1;
  12.            break;
  13.        }
  14.  
  15.        for(i=0;i<50;i++)
  16.        {
  17.           printf("\t\t");
  18.            for(j=0;j<50;j++)
  19.            {
  20.               if(matriu[i][j]==1)
  21.                  printf("X");
  22.               else if(matriu[i][j]==0 )
  23.                  printf(".");
  24.           }
  25.           printf("\n");
  26.        }
  27.        break;
  28.      default:
  29. printf("El numero introducido es incorrecto.\n");
  30.  
  31. ..........
  32.  

Mira lo que sale ahora:


Si hay algún otro problema insiste

¡¡¡¡ Saluditos! ..... !!!!



En línea

lfgmespino

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Problema contador en C
« Respuesta #15 en: 3 Marzo 2014, 00:03 am »

#include <stdio.h>
#include <conio.h>

void dibuja_tabla(int tabla[10][10]);

enum sentido {izquierda, derecha };

int main()
{
  int inicio,i,j, sinsalida;
  sentido direccion;
  char ch;

  int matriu[10][10]={
  {0,0,0,0,0,0,0,0,0,0},
  {0,1,0,0,1,0,0,0,1,0},
  {0,1,0,1,0,0,0,1,0,0},
  {0,1,0,0,0,0,1,0,0,0},
  {0,0,0,0,0,0,0,0,0,1},
  {0,1,1,1,1,0,0,0,1,0},
  {0,0,0,0,0,0,0,1,0,0},
  {1,0,0,0,0,0,1,0,0,0},
  {0,1,0,0,0,1,0,0,0,0},
  {0,0,1,0,0,0,0,0,0,0},
  };

  do{
  printf("\nIntroducir el numero de columna por el cual desea lanzar la primera bola: ");
  scanf("%d",&inicio);
  }while(inicio>9);

  do{
  printf("\nEn caso de encontrarse con un obstaculo, en que direccion quiere que se dirija la bola, derecha (D) o izquierda (I): ");
  fflush(stdin);
  scanf("%c", &ch);
  }while(ch!='D' && ch!='d' && ch!='I' && ch!='i');

  if (ch == 'D' || ch == 'd') direccion = derecha;
     else direccion = izquierda;


 i = 0;
 j = inicio;
 sinsalida = 0;
 matriu[j]=25;
 while ((i<9)&& (!sinsalida)) {   //bucle mientras que no llegue abajo
    if (matriu[i+1][j]==1) {      // si hay obstaculo debajo de la bola
      switch (direccion) {
         case derecha:
            if ((j<9)&& (matriu[j+1]!=1)){
               j++;                          //si puede ir a la derecha y esta libre
               matriu[j]= 26;            //marcar el camino
               }  else {
                  sinsalida = 1;            //si no puede ir a la derecha
                  }
            break;
         case izquierda:
            if ((j>0) && (matriu[j-1]!=1)){
               j--;                            //si puede ir a la izquierda y esta libre
               matriu[j]= 27;             //marcar el camino
               }    else {
                  sinsalida = 1;             //si no puede ir a la izquierda
                  }
            break;
         }
        } else {                      //si llega aqui es porque puede bajar
         i++;                        // baja un nivel
         matriu[j]=25;           // marca el descenso de un nivel
         }

    }

 if (i==9) {                      //sale con exito
    printf("\nExito. Bola llega al final en posicion %d, %d \n\n", i, j);
    } else printf("\nFracaso. Bola atrapada en posicion %d, %d \n\n", i, j);

   dibuja_tabla(matriu);

   getch();
   return 0;
}

void dibuja_tabla(int tabla[10][10])      // Imprime tabla
{
   int i, j;

  for(i=0;i<10;i++)  {
     printf("\t%d- ", i);
        for(j=0;j<10;j++)
         {
            if(tabla[j]==1) printf("X ");
               else if(tabla[j]==0) printf(". ");
                   else printf("%c ", tabla[j]);
         }
     printf("\n");
     }

}
Código
  1. [code=cpp]
[/code]
En línea

lfgmespino

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Problema contador en C
« Respuesta #16 en: 3 Marzo 2014, 00:05 am »

Soy nuevo y no sé todavía como enviar código junto con comentarios. He enviado el código en el mensaje anterior y el comentario ahora.

Bueno, el caso es que he toqueteado el programita y funciona.

Saludos
En línea

People95

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Problema contador en C
« Respuesta #17 en: 3 Marzo 2014, 00:28 am »

Leosansan, no sabes como te lo agradezco, sin ti aún estaría estancado en el principio  ;D

lfgmespino, supongo que eso es el apartado de lanzar una pelota, ese ya lo tengo hecho :D, para poner un codigo donde pone GeSHI tienes que elegir C

Por último, ya sólo tengo un fallo más, y con eso ya habré terminado el programa y no os daré más por saco...

A la hora de comprobar si la nueva tabla es legal (que siempre caerá la pelota), tengo que mirar si nunca se cumple esto:



entonces para solucionar esto pongo en el switch:

Código
  1. case 2:
  2.  
  3.  
  4. while(i>=51 && j>=51){
  5. if (matriu[i][j]==1){
  6. if (matriu[i][j]==matriu[i+1][j] && matriu[i][j]==matriu[i][j+1] && matriu[i][j]==matriu[i][j-1])
  7. error=1;
  8. break;
  9.  
  10. }          
  11.         }

Pero actua como si nada, como si estuviera correcto
Error o tengo inicializado en el principio como 0
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Problema contador en C
« Respuesta #18 en: 3 Marzo 2014, 08:06 am »

Leosansan, no sabes como te lo agradezco, sin ti aún estaría estancado en el principio  ;D
..........................................................................

Por último, ya sólo tengo un fallo más, y con eso ya habré terminado el programa y no os daré más por saco...

A la hora de comprobar si la nueva tabla es legal (que siempre caerá la pelota), tengo que mirar si nunca se cumple esto:



entonces para solucionar esto pongo en el switch:

..................................................................
Pero actua como si nada, como si estuviera correcto
Error o tengo inicializado en el principio como 0


Supongo que partimos de que la matriz inicial es válida y que el problema surge al cambiar un valor de la matriz y aparecer la "trampa" que puede encerrar a la pelota , ¿O.K?.

En tal caso habrá que validar el cambio hecho, en el sentido que si ha provocado una "trampa" debe devolver el valor que había, vamos deshacer el cambio introducido.

Eso lo consigues así:


Código
  1. case 2:
  2.    /************************************/
  3.          for(i=0;i<49;i++)
  4.            for(j=0;j<48;j++)
  5.              if (matriu[i][j]==1 && matriu[i+1][j+1]==1 && matriu[i][j+2]==1)
  6.            puts("ERROR NO SE HA HECHO NINGUN CAMBIO");
  7.            matriu[columna][fila] = 0;
  8.    /************************************/
  9.        for(i=0;i<50;i++)
  10.        {
  11.           printf("\t\t");
  12.            for(j=0;j<50;j++)
  13.            {
  14.               if(matriu[i][j]==1)
  15.                  printf("X");
  16.               else if(matriu[i][j]==0 )
  17.                  printf(".");
  18.           }
  19.           printf("\n");
  20.        }
  21.        break;
  22.      default:
  23.  

Introduce 0 y 3 para que veas lo que sucede.

Lo que te  planteo es una opción. A mí me gustaría más hacer la validación en el case 1, pero respeto tu opción, es igualmente válida.


¡¡¡¡ Saluditos! ..... !!!!



En línea

People95

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Problema contador en C
« Respuesta #19 en: 3 Marzo 2014, 12:01 pm »

Pues con esto mi parte del programa ya está acabado!!
Gracias de verdad, sin tu ayuda hubiese sacado un 0 jjaja
En línea

Páginas: 1 [2] 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con contador en C « 1 2 »
Programación C/C++
-/lnkx/- 12 20,897 Último mensaje 7 Diciembre 2011, 18:53 pm
por A.ABAENA
Problema con contador, displays de 7 segmentos
ASM
dragonlady 0 2,336 Último mensaje 21 Junio 2015, 20:07 pm
por dragonlady
Problema contador python
Scripting
runas3 6 4,872 Último mensaje 1 Junio 2017, 12:53 pm
por runas3
Problema con contador en batch.
Scripting
Ezko 2 4,418 Último mensaje 11 Mayo 2018, 18:58 pm
por Ezko
problema con contador que toma segundos del sistema
ASM
FERNIIIIN 3 2,365 Último mensaje 28 Mayo 2019, 23:39 pm
por xv0
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines