Foros del Web » Programación para mayores de 30 ;) » C/C++ »

switch y for comportamiento misterioso

Estas en el tema de switch y for comportamiento misterioso en el foro de C/C++ en Foros del Web. bueno, aqui vuelve el pesado de turno :) bueno, este es el codigo problematico: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C: Ver original void dibuja_pantalla ( SDL_Surface * ...
  #1 (permalink)  
Antiguo 27/08/2010, 11:07
 
Fecha de Ingreso: noviembre-2009
Mensajes: 186
Antigüedad: 14 años, 5 meses
Puntos: 2
switch y for comportamiento misterioso

bueno, aqui vuelve el pesado de turno :)

bueno, este es el codigo problematico:
Código C:
Ver original
  1. void dibuja_pantalla(SDL_Surface *pantalla, SDL_Surface *imagenes[],
  2.                      SDL_Rect posiciones[][IMAG_Y], char mapa[][IMAG_Y+1]){
  3.  
  4.             for(int i=0; i<=IMAG_X; i++){       //8
  5.                 for(int j=0; j<=IMAG_Y; j++){ //0
  6.                     char ch=mapa[i][j];
  7.                          switch(ch){
  8.  
  9.                              case '.':
  10.                                  dibuja_imagen(posiciones[i][j], imagenes[SUELO],
  11.                                                pantalla, 0);
  12.                                  break;
  13.  
  14.                              case 'h':
  15.                                  dibuja_imagen(posiciones[i][j], imagenes[PARED_H],
  16.                                                pantalla, 0);
  17.                                  break;
  18.  
  19.                              case 'v':
  20.                                  dibuja_imagen(posiciones[i][j], imagenes[PARED_V],
  21.                                                pantalla, 0);
  22.                                  break;
  23.  
  24.                              case '[':
  25.                                  dibuja_imagen(posiciones[i][j], imagenes[ESQUINA_AI],
  26.                                                pantalla, 0);
  27.                                  break;
  28.  
  29.                              case '(':
  30.                                  dibuja_imagen(posiciones[i][j], imagenes[ESQUINA_DI],
  31.                                                pantalla, 0);
  32.                                  break;
  33.  
  34.                              case ']':
  35.                                  dibuja_imagen(posiciones[i][j], imagenes[ESQUINA_AD],
  36.                                                pantalla, 0);
  37.                                  break;
  38.  
  39.                              case ')':
  40.                                  dibuja_imagen(posiciones[i][j], imagenes[ESQUINA_DD],
  41.                                                pantalla, 0);
  42.                                  break;
  43.  
  44.                              case '@':
  45.                                  dibuja_imagen(posiciones[i][j], imagenes[PERSONAJE],
  46.                                                pantalla, 0);
  47.                                  break;
  48.  
  49.                              case 'P':
  50.                                  dibuja_imagen(posiciones[i][j], imagenes[PROFESOR],
  51.                                                pantalla, 0);
  52.                                  break;
  53.  
  54.                              case 'B':
  55.                                  dibuja_imagen(posiciones[i][j], imagenes[BORRADOR],
  56.                                                pantalla, 0);
  57.                                  break;
  58.  
  59.                              case 'T':
  60.                                  dibuja_imagen(posiciones[i][j], imagenes[TIZA],
  61.                                                pantalla, 0);
  62.                                  break;
  63.  
  64.                              case 'C':
  65.                                  dibuja_imagen(posiciones[i][j], imagenes[CONSERJE],
  66.                                                pantalla, 0);
  67.                                  break;
  68.  
  69.                              case '+':
  70.                                  dibuja_imagen(posiciones[i][j], imagenes[PUERTA],
  71.                                                pantalla, 0);
  72.                                  break;
  73.                          }
  74.                 }
  75.             }
  76. }

el problema viene al entrar al switch, algo que solo hace cuando i=8 y j=0, hasta entonces se pasa el tiempo pasando olimpicamente de el.

gracias por adelantado.
  #2 (permalink)  
Antiguo 27/08/2010, 13:54
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: switch y for comportamiento misterioso

Tiene la pinta que no encuentra ninguna concordancia hasta la posciion que mencionas.....

Estas seguro que mapa tiene lo que pensas? antes del switch le pondria un printf para ver que caracter esta tomando...solo para asegurarnos.
  #3 (permalink)  
Antiguo 27/08/2010, 14:44
 
Fecha de Ingreso: noviembre-2009
Mensajes: 186
Antigüedad: 14 años, 5 meses
Puntos: 2
Respuesta: switch y for comportamiento misterioso

estoy seguro, para cargarlo uso una funcion (mira este hilo: http://www.forosdelweb.com/f96/probl...ivos-c-836850/) y el mapa que cargo aparece tambien en ese hilo-
  #4 (permalink)  
Antiguo 07/09/2010, 15:14
 
Fecha de Ingreso: noviembre-2009
Mensajes: 186
Antigüedad: 14 años, 5 meses
Puntos: 2
Respuesta: switch y for comportamiento misterioso

no hay nadie que sepa el porque del error?
  #5 (permalink)  
Antiguo 07/09/2010, 16:09
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: switch y for comportamiento misterioso

Para hacer debug del caso, agrega un default a tu switch e imprime el valor de ch ahi.
  #6 (permalink)  
Antiguo 07/09/2010, 16:44
 
Fecha de Ingreso: noviembre-2009
Mensajes: 186
Antigüedad: 14 años, 5 meses
Puntos: 2
Respuesta: switch y for comportamiento misterioso

oh, pues no se me había ocurrido. muchas gracias, y me lo apuntare en mi lista de "utilidades"

Etiquetas: switch
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:23.