| 
	
		|  Autor | Tema: error logico c  (Leído 2,870 veces) |  
	| 
			| 
					
						| Kenji-chan 
								
								 Desconectado 
								Mensajes: 104
								
								
								
								
								
								   | 
 
hola, necesito ayuda para entender el error de mi código, es un bus caminas versión ms-dos en la funcion comprobar() que se ejecuta en la funcion gameLoop() no me reconoce las coordenadas correctas y me da otro valor. gracias de antemano. PD. el codigo esta preparado en mi modo debug para cundo lo ejjecuten sea mas facil de entender #include <stdio.h>#include <time.h>#include <windows.h> int numero; void gotoxy(int x,int y);int menu();void llenarTablero(int tablero[][numero], int num);void dibujarTablero(int tablero[][numero], int num);int comprbacion(int tablero[][numero], int corx, int cory);void gameLoop(int tablero[][numero], int num);int gameOver(int tablero[][numero], int num);void borrar(int num);void comodin(int tablero[][numero], int num, int corx, int cory); int main(){     int op;     do{        op = menu();         switch(op){            case 1:            numero = 10;            break;            case 2:            numero = 15;            break;            case 3:            numero = 20;            break;        }         if(op != 0){            int tablero[numero][numero];             llenarTablero(tablero,numero);            dibujarTablero(tablero,numero);            gameLoop(tablero,numero);        }     }while(op != 0);     return 0;} void gotoxy(int x,int y){      HANDLE hcon;      hcon = GetStdHandle(STD_OUTPUT_HANDLE);      COORD dwPos;      dwPos.X = x;      dwPos.Y= y;      SetConsoleCursorPosition(hcon,dwPos); } int menu(){    int op;      printf("\t\t\tBusca minas versión ms-dos\n\n");     do{        if(op<0 || op>3)            printf("EL numero ingresado es incorecto\n");    }while(op<0 || op>3);     return op;} void llenarTablero(int tablero[][numero], int num){     int i, j;     for(i=0; i<num; i++){        for(j=0; j<num; j++){                tablero[ i][ j] = rand()%2;        }    } } void dibujarTablero(int tablero[][numero], int num){     int i, j;      for(i=0; i<num; i++){        for(j=0; j<num; j++){            //printf("%c",35);            printf("%d",tablero[ i][ j]);//para hacer debug        }    }} int comprbacion(int tablero[][numero], int corx, int cory){    if(tablero[corx][cory] == 1){        gotoxy(25,2);//para hacer debug        printf("tablrero[%d][%d] = %d", corx,  cory,  tablero[ corx][ cory]);//para hacer debug        gotoxy(0,numero+3);//para hacer debug        tablero[corx][cory] = 3;        getch();//para hacer debug        return 1;    }} void gameLoop(int tablero[][numero], int num){    int corx, cory, fin, vidas = 3;    int i, j;     do{        borrar(num);        printf("escriba una cordenado");         if(corx>=num || cory>=num){            borrar(num);            printf("las cordenadas son incorrectas");        }else if(comprbacion(tablero, corx, cory) == 1){            borrar(num);            printf("As asertado te quedan %d vidas", vidas);            gotoxy(corx,cory);            //sirve para buscar espacios libres vecionos y desbloquearlos            comodin(tablero, num, corx, cory);         }else if(comprbacion(tablero, corx, cory) == 0){            borrar(num);            vidas--;            printf("Era una bomba te quedan %d vidas", vidas);            gotoxy(corx,cory);        }        //fin = gameOver(tablero, num);         Sleep(2500);    }while(vidas !=0);} void borrar(int num){    int i;    gotoxy(0,num+3);    for(i=0; i<5; i++){    }    gotoxy(0,num+3);} void comodin(int tablero[][numero], int num, int corx, int cory){    int i,j;     for(i=corx; i<num; i++){        for(j=cory; j<num; j++){            if(tablero[i][j] == 0)                j=num;            else if(tablero[i][j] == 1){                gotoxy(i,j);            }            getch();//para hacer debug        }         for(j=cory; j>0; j--){            if(tablero[i][j] == 0)                j=0;            else if(tablero[i][j] == 1){                gotoxy(i,j);            }            getch();//para hacer debug        }         if(tablero[i][j] == 0)                i=num;    }     for(i=corx; i>0; i--){        for(j=cory; j>0; j--){            if(tablero[i][j] == 0)                j=0;            else if(tablero[i][j] == 1){                gotoxy(i,j);            }            getch();//para hacer debug        }         for(j=cory; j<num; j++){            if(tablero[i][j] == 0)                j=num;            else if(tablero[i][j] == 1){                gotoxy(i,j);            }            getch();//para hacer debug        }         if(tablero[i][j] == 0)                i=0;    } } int gameOver(int tablero[][numero], int num){    int i, j;    for(i=0; i<num; i++){        for(j=0; j<num; j++){            if(tablero[i][j] == 1)                return 1;            else                return 0;        }    }}  
 
 |  
						| 
								|  |  
								| « Última modificación: 13 Diciembre 2016, 00:16 am por engel lex » |  En línea | 
 
 |  |  |  | 
			| 
					
						| engel lex | 
 
PD. el codigo esta preparado en mi modo debug para cundo lo ejjecuten sea mas facil de entender probablemente nadie lo compile... requiere tiempo y trabajo... es recomendable que indiques exactamente donde está el error, que esperas, que resulta...  me imagino que "comprobar()" es "comprbacion(int tablero[][numero], int corx, int cory)" (te falta una o compro bacion) a demás no retorna valor si no entra al if, lo que puede generar resultados inesperados (no asumas que si no escribes el return, return será 0... nunca asúmas en C o C++ que algo vale 0, si no se lo has colocado tu mismo) 
 
 |  
						| 
								|  |  
								| « Última modificación: 13 Diciembre 2016, 00:24 am por engel lex » |  En línea | 
 
 El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
 |  |  |  | 
			| 
					
						| Kenji-chan 
								
								 Desconectado 
								Mensajes: 104
								
								
								
								
								
								   | 
 
x ejemplo en este caso escrivi en la cordenada 2,0 que es un uno y despus me la da como 0  MOD: Imagen adaptada a lo permitido. |  
						| 
								|  |  
								| « Última modificación: 13 Diciembre 2016, 00:42 am por MCKSys Argentina » |  En línea | 
 
 |  |  |  | 
			| 
					
						| engel lex | 
 
tu tablero está girado 90º lo imprimiste mal void dibujarTablero(int tablero[][numero], int num){     int i, j;      for(i=0; i<num; i++){        for(j=0; j<num; j++){            //printf("%c",35);            printf("%d",tablero[ i][ j]);//para hacer debug        }    }}
 en ese codigo "j" es x (acuerdate que el compilador imprime a la derecha del anterior) cuando j termina, hace un salto de linea y va con el siguiente "i" (y) por consecuencia siempre que uses printf, el ciclo interno es X siempre es util mentener la uniformidad void dibujarTablero(int tablero[][numero], int num){     int x, y;      for(y=0; y<num; y++){        for(x=0; x<num; x++){            //printf("%c",35);            printf("%d",tablero[ x][ y]);//para hacer debug        }    }}
 |  
						| 
								|  |  
								|  |  En línea | 
 
 El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
 |  |  |  | 
			| 
					
						| Kenji-chan 
								
								 Desconectado 
								Mensajes: 104
								
								
								
								
								
								   | 
 
gracias ya funciona bien    |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  |  |  
 
	
 
 
				
					
						| Mensajes similares |  
						|  | Asunto | Iniciado por | Respuestas | Vistas | Último mensaje |  
						|   |   | Nero y CD de musica,NO es logico Software
 | Layyer | 4 | 2,661 |  12 Junio 2003, 16:14 pm por kåhjî£
 |  
						|   |   | ayuda con este programa, tengo un error logico creo Programación C/C++
 | TaLaP0 XoR BiT | 2 | 3,267 |  3 Diciembre 2012, 04:06 am por TaLaP0 XoR BiT
 |  
						|   |   | error logico ayuda con este programa Programación C/C++
 | MellaSystems | 8 | 3,714 |  23 Febrero 2015, 06:19 am por MellaSystems
 |  
						|   |   | Error lógico cuando compilo ejercicio - CONSULTA Programación C/C++
 | Cero++ | 6 | 2,713 |  11 Diciembre 2018, 20:51 pm por Cero++
 |  
						|   |   | Operador lógico OR Programación C/C++
 | OlgaFuentes | 1 | 3,654 |  6 Octubre 2022, 18:24 pm por Lieutenant McFarley
 |    |