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:
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:
Código (c) [Seleccionar]
#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(" | 1 2 3 |\n");
printf("- + - - - +\n");
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]);
printf("- - - - - -\n");
printf("\n");
printf("Primer Valor: ");
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(" | 1 2 3 |\n");
printf("- + - - - +\n");
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%
printf("- - - - - -\n");
printf("\n");
valor [0];
valor [1]='.';
valor [2]='.';
valor [3]='.';
valor [4]='.';
valor [5]='.';
valor [6]='.';
valor [7]='.';
valor [8]='.';
printf("Segundo valor: ");
scanf("%c", &valor[1]);
porcentaje = (100/9.)*(TAM-7);
hueco--;
printf("\nNumero de huecos: %d. Porcentaje del tablero lleno: %.2lf %%\n\n", hueco, porcentaje);
printf(" | 1 2 3 |\n");
printf("- + - - - +\n");
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]);
printf("- - - - - -\n");
printf("\n");
valor [0];
valor [1];
valor [2]='.';
valor [3]='.';
valor [4]='.';
valor [5]='.';
valor [6]='.';
valor [7]='.';
valor [8]='.';
printf("Tercer valor: ");
scanf("%c", &valor[2]);
porcentaje = (100/9.)*(TAM-6);
hueco--;
printf("\nNumero de huecos: %d. Porcentaje del tablero lleno: %.2lf %%\n\n", hueco, porcentaje);
printf(" | 1 2 3 |\n");
printf("- + - - - +\n");
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]);
printf("- - - - - -\n");
printf("\n");
valor [0];
valor [1];
valor [2];
valor [3]='.';
valor [4]='.';
valor [5]='.';
valor [6]='.';
valor [7]='.';
valor [8]='.';
printf("Cuarto valor: ");
scanf("%c", &valor[3]);
porcentaje = (100/9.)*(TAM-5);
hueco--;
printf("\nNumero de huecos: %d. Porcentaje del tablero lleno: %.2lf %%\n\n", hueco, porcentaje);
printf(" | 1 2 3 |\n");
printf("- + - - - +\n");
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]);
printf("- - - - - -\n");
printf("\n");
valor [0];
valor [1];
valor [2];
valor [3];
valor [4]='.';
valor [5]='.';
valor [6]='.';
valor [7]='.';
valor [8]='.';
printf("Quinto valor: ");
scanf("%c", &valor[4]);
porcentaje = (100/9.)*(TAM-4);
hueco--;
printf("\nNumero de huecos: %d. Porcentaje del tablero lleno: %.2lf %%\n\n", hueco, porcentaje);
printf(" | 1 2 3 |\n");
printf("- + - - - +\n");
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]);
printf("- - - - - -\n");
printf("\n");
valor [0];
valor [1];
valor [2];
valor [3];
valor [4];
valor [5]='.';
valor [6]='.';
valor [7]='.';
valor [8]='.';
printf("Sexto valor: ");
scanf("%c", &valor[5]);
porcentaje = (100/9.)*(TAM-3);
hueco--;
printf("\nNumero de huecos: %d. Porcentaje del tablero lleno: %.2lf %%\n\n", hueco, porcentaje);
printf(" | 1 2 3 |\n");
printf("- + - - - +\n");
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]);
printf("- - - - - -\n");
printf("\n");
valor [0];
valor [1];
valor [2];
valor [3];
valor [4];
valor [5];
valor [6]='.';
valor [7]='.';
valor [8]='.';
printf("Septimo valor: ");
scanf("%c", &valor[6]);
porcentaje = (100/9.)*(TAM-2);
hueco--;
printf("\nNumero de huecos: %d. Porcentaje del tablero lleno: %.2lf %%\n\n", hueco, porcentaje);
printf(" | 1 2 3 |\n");
printf("- + - - - +\n");
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]);
printf("- - - - - -\n");
printf("\n");
valor [0];
valor [1];
valor [2];
valor [3];
valor [4];
valor [5];
valor [6];
valor [7]='.';
valor [8]='.';
printf("Octavo valor: ");
scanf("%c", &valor[7]);
porcentaje = (100/9.)*(TAM-1);
hueco--;
printf("\nNumero de huecos: %d. Porcentaje del tablero lleno: %.2lf %%\n\n", hueco, porcentaje);
printf(" | 1 2 3 |\n");
printf("- + - - - +\n");
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]);
printf("- - - - - -\n");
printf("\n");
valor [0];
valor [1];
valor [2];
valor [3];
valor [4];
valor [5];
valor [6];
valor [7];
valor [8]='.';
printf("Ultimo valor: ");
scanf("%c", &valor[8]);
porcentaje = (100/9.)*(TAM);
hueco--;
printf("\nNumero de huecos: %d. Porcentaje del tablero lleno: %.2lf %%\n\n", hueco, porcentaje);
printf(" | 1 2 3 |\n");
printf("- + - - - +\n");
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]);
printf("- - - - - -\n");
printf("\n");
valor [0];
valor [1];
valor [2];
valor [3];
valor [4];
valor [5];
valor [6];
valor [7];
valor [8];
}