Autor
|
Tema: fallo inexplicable en este programa, ayuda por favor (Leído 3,719 veces)
|
Adri124
Desconectado
Mensajes: 14
|
Hola buenas, desde hace algunos dias me he roto la cabeza con este programa, el cual consiste en un tablero de sudoku que pide numeros (en este caso caracteres) para ir rellenando dicho tablero de sudoku. La version de este programa que utiliza enteros en vez de caracteres me salió sin ningún problema, pero en esta version, en la que se pide realizar lo mismo pero con caracteres no entiendo por qué se salta scanf's, rellena irracionalmente espacios, desordenando el tablero, etc... He comprobado que el tipo de datos valor sea char, que los scanf recojan los caracteres con %c, que el tablero muestre los numeros con %c... El fallo parece estar a partir de introducir el primer valor que se pide, a partir de ahí es el caos, repite todo de 2 en 2. Creedme, si no estuviera tan desquiciado no habría preguntado. Puede que sea una tontería, pues estoy empezando, pero no lo entiendo. Respecto al uso de bucles, no he usado porque no nos lo permiten aún, así como punteros, etc... la estructura que tengo es la pedida. Aquí el código fuente del programa: #include <stdio.h> #define TAM 9 //Por mayor comodidad y fiabilidad, establecemos que TAM equivalga a la constante 9 void main() { char valor[TAM]; int hueco = TAM; //El número de huecos del tablero será igual a TAM hasta que se decremente en una unidad sucesivamente double porcentaje; //Declaramos el tipo de dato double porcentaje para mostrar el % adecuado en cada momento valor [0]='.'; valor [1]='.'; valor [2]='.'; valor [3]='.'; valor [4]='.'; //Inicializamos con '.' todas las variables, como se pide. valor [5]='.'; valor [6]='.'; valor [7]='.'; valor [8]='.'; printf("A | %c %c %c |\n", valor [0], valor [1], valor [2]); printf("B | %c %c %c |\n", valor [3], valor [4], valor [5]); //Mostramos el tablero con todos los huecos (variables) con '.' printf("C | %c %c %c |\n", valor [6], valor [7], valor [8]); scanf("%c", &valor [0]); //En ésta ocasión y las siguientes, iremos almacenando en el tablero los valores del usuario porcentaje = (100/9.)*(TAM-8); //Cálculo del porcentaje, que se irá actualizando conforme vayamos restando una unidad a TAM printf("\nNumero de huecos: %d. Porcentaje del tablero lleno: %.2lf %%\n\n", hueco , porcentaje ); printf("A | %c %c %c |\n", valor [0], valor [1], valor [2]); printf("B | %c %c %c |\n", valor [3], valor [4], valor [5]); //Comienzo del proceso que se repite hasta alcanzar el número de printf("C | %c %c %c |\n", valor [6], valor [7], valor [8]); //huecos 0 y porcentaje del tablero lleno 100.00% valor [0]; valor [1]='.'; valor [2]='.'; valor [3]='.'; valor [4]='.'; valor [5]='.'; valor [6]='.'; valor [7]='.'; valor [8]='.'; porcentaje = (100/9.)*(TAM-7); hueco--; printf("\nNumero de huecos: %d. Porcentaje del tablero lleno: %.2lf %%\n\n", hueco , porcentaje ); printf("A | %c %c %c |\n", valor [0], valor [1], valor [2]); printf("B | %c %c %c |\n", valor [3], valor [4], valor [5]); printf("C | %c %c %c |\n", valor [6], valor [7], valor [8]); valor [0]; valor [1]; valor [2]='.'; valor [3]='.'; valor [4]='.'; valor [5]='.'; valor [6]='.'; valor [7]='.'; valor [8]='.'; porcentaje = (100/9.)*(TAM-6); hueco--; printf("\nNumero de huecos: %d. Porcentaje del tablero lleno: %.2lf %%\n\n", hueco , porcentaje ); printf("A | %c %c %c |\n", valor [0], valor [1], valor [2]); printf("B | %c %c %c |\n", valor [3], valor [4], valor [5]); printf("C | %c %c %c |\n", valor [6], valor [7], valor [8]); valor [0]; valor [1]; valor [2]; valor [3]='.'; valor [4]='.'; valor [5]='.'; valor [6]='.'; valor [7]='.'; valor [8]='.'; porcentaje = (100/9.)*(TAM-5); hueco--; printf("\nNumero de huecos: %d. Porcentaje del tablero lleno: %.2lf %%\n\n", hueco , porcentaje ); printf("A | %c %c %c |\n", valor [0], valor [1], valor [2]); printf("B | %c %c %c |\n", valor [3], valor [4], valor [5]); printf("C | %c %c %c |\n", valor [6], valor [7], valor [8]); valor [0]; valor [1]; valor [2]; valor [3]; valor [4]='.'; valor [5]='.'; valor [6]='.'; valor [7]='.'; valor [8]='.'; porcentaje = (100/9.)*(TAM-4); hueco--; printf("\nNumero de huecos: %d. Porcentaje del tablero lleno: %.2lf %%\n\n", hueco , porcentaje ); printf("A | %c %c %c |\n", valor [0], valor [1], valor [2]); printf("B | %c %c %c |\n", valor [3], valor [4], valor [5]); printf("C | %c %c %c |\n", valor [6], valor [7], valor [8]); valor [0]; valor [1]; valor [2]; valor [3]; valor [4]; valor [5]='.'; valor [6]='.'; valor [7]='.'; valor [8]='.'; porcentaje = (100/9.)*(TAM-3); hueco--; printf("\nNumero de huecos: %d. Porcentaje del tablero lleno: %.2lf %%\n\n", hueco , porcentaje ); printf("A | %c %c %c |\n", valor [0], valor [1], valor [2]); printf("B | %c %c %c |\n", valor [3], valor [4], valor [5]); printf("C | %c %c %c |\n", valor [6], valor [7], valor [8]); valor [0]; valor [1]; valor [2]; valor [3]; valor [4]; valor [5]; valor [6]='.'; valor [7]='.'; valor [8]='.'; porcentaje = (100/9.)*(TAM-2); hueco--; printf("\nNumero de huecos: %d. Porcentaje del tablero lleno: %.2lf %%\n\n", hueco , porcentaje ); printf("A | %c %c %c |\n", valor [0], valor [1], valor [2]); printf("B | %c %c %c |\n", valor [3], valor [4], valor [5]); printf("C | %c %c %c |\n", valor [6], valor [7], valor [8]); valor [0]; valor [1]; valor [2]; valor [3]; valor [4]; valor [5]; valor [6]; valor [7]='.'; valor [8]='.'; porcentaje = (100/9.)*(TAM-1); hueco--; printf("\nNumero de huecos: %d. Porcentaje del tablero lleno: %.2lf %%\n\n", hueco , porcentaje ); printf("A | %c %c %c |\n", valor [0], valor [1], valor [2]); printf("B | %c %c %c |\n", valor [3], valor [4], valor [5]); printf("C | %c %c %c |\n", valor [6], valor [7], valor [8]); valor [0]; valor [1]; valor [2]; valor [3]; valor [4]; valor [5]; valor [6]; valor [7]; valor [8]='.'; porcentaje = (100/9.)*(TAM); hueco--; printf("\nNumero de huecos: %d. Porcentaje del tablero lleno: %.2lf %%\n\n", hueco , porcentaje ); printf("A | %c %c %c |\n", valor [0], valor [1], valor [2]); printf("B | %c %c %c |\n", valor [3], valor [4], valor [5]); printf("C | %c %c %c |\n", valor [6], valor [7], valor [8]); valor [0]; valor [1]; valor [2]; valor [3]; valor [4]; valor [5]; valor [6]; valor [7]; valor [8]; }
|
|
« Última modificación: 11 Octubre 2010, 23:29 pm por Littlehorse »
|
En línea
|
|
|
|
xassiz~
|
Para este tipo de cosas como tableros, te recomendaría trabajar con arrays de dos dimensiones (una tabla).
|
|
|
En línea
|
|
|
|
Adri124
Desconectado
Mensajes: 14
|
Ya lo pensé, pero tampoco nos dejan porque aún no está explicado en clase
Lh: No hagas doble post, utiliza el botón modificar.
por curiosidad he probado con tabla (dos dimensiones) y tampoco
|
|
« Última modificación: 11 Octubre 2010, 23:28 pm por Littlehorse »
|
En línea
|
|
|
|
iCore
Desconectado
Mensajes: 8
|
por curiosidad he probado con tabla (dos dimensiones) y tampoco
Que compilador usas?
|
|
|
En línea
|
|
|
|
Adri124
Desconectado
Mensajes: 14
|
Hola, uso el compilador del codeblocks en windows, el GCC adaptado a windows.
|
|
|
En línea
|
|
|
|
iCore
Desconectado
Mensajes: 8
|
Hola, uso el compilador del codeblocks en windows, el GCC adaptado a windows.
Vale, aunque el compilador es lo de menos, ya que C/C++ son casi las mismas sintaxis, voy a probar tu código y te aviso si encontré la falla vale?. Regards; ----------------------------------------------------------------------------------------------- Edito: Te habeis dado cuenta lo que pasa si en un principio como valor 1, colocas los numeros que quieras (completando una cadena de 9)? Se rellenan tdos los recuadros con todo el orden, menuda locura ... me ando iniciando con C++ y valla que no encuentro la falla aún... espero dar con ella pronto . Prueba: Regards;
|
|
« Última modificación: 12 Octubre 2010, 01:33 am por iCore »
|
En línea
|
|
|
|
Adri124
Desconectado
Mensajes: 14
|
No había caido en eso!! salta a la ultima posicion si pones 012345678!! tambien he pensado que este problema venga precisamente de que se trabaja con caracteres y haya que limitarlos con /0 pero ni idea...
Tambien acabo de probar a hacer la tabla con strings (una locura) y el programa revienta por todas partes, no hay forma
Lh: No hagas doble post, utiliza el botón modificar.
Ya está resuelto!!! al final el único misterio que tenía era el siguiente, por si alguna vez os pasa: antes del especificador de formato %c del scanf hay que dejar un espacio, para indicarle que no coja espacios (me estaba inundando de espacios el tablero y se descolocaba), quedando al final así: scanf(" %c", &valor[0]);
|
|
« Última modificación: 12 Octubre 2010, 18:00 pm por Littlehorse »
|
En línea
|
|
|
|
iCore
Desconectado
Mensajes: 8
|
No había caido en eso!! salta a la ultima posicion si pones 012345678!! tambien he pensado que este problema venga precisamente de que se trabaja con caracteres y haya que limitarlos con /0 pero ni idea...
Tambien acabo de probar a hacer la tabla con strings (una locura) y el programa revienta por todas partes, no hay forma
Lh: No hagas doble post, utiliza el botón modificar.
Ya está resuelto!!! al final el único misterio que tenía era el siguiente, por si alguna vez os pasa: antes del especificador de formato %c del scanf hay que dejar un espacio, para indicarle que no coja espacios (me estaba inundando de espacios el tablero y se descolocaba), quedando al final así: scanf(" %c", &valor[0]);
Valla valla yo me lié con otras cosas, de hecho intentaba con arrays y ni así lograba un gusto que hayas solucionado tu problema, aunque no ayude en nada igual te las arreglaste!; esa info me servirá para después. Regards;
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Corriente electrica o fallo del portatil? ayuda por favor
« 1 2 »
Hardware
|
silver_dh
|
17
|
8,069
|
21 Noviembre 2011, 18:25 pm
por silver_dh
|
|
|
inexplicable Presario F700 Ayuda
Hardware
|
Ripperr0x
|
6
|
13,259
|
1 Marzo 2012, 13:15 pm
por Ripperr0x
|
|
|
Una ayuda con este programa por favor
Programación C/C++
|
virgimonlon21v
|
2
|
5,255
|
15 Noviembre 2012, 00:43 am
por virgimonlon21v
|
|
|
por favor ayuda con este programa no entiendo como hacerlo
Programación C/C++
|
enrix507
|
1
|
2,394
|
16 Julio 2014, 06:41 am
por engel lex
|
|
|
ayudaaaaaa!!!!con este programa por favor plisss y nos hacemos amigos
Programación General
|
MGL9
|
4
|
3,422
|
28 Enero 2021, 01:08 am
por Tachikomaia
|
|