Ayuda pascal

¿Una preguntica tu de casualidad has llegado a programar un sudoku en pascal?

1 respuesta

Respuesta
1
Pues la verdad, no xD
He programado una amplia variedad de cosas, entre ellas algún juego, pero no el Sudoku ;)
Ok
Otra preguntica a parte de eso... este recorrido que tengo es para guardar lo que tengo en pascal en un block de notas
{-----esto es solo para q entiendas el recorrido de abajo-----}
Sudocuadro = 0..10;
TCuadricula = Array [1..9,1..9] of sudocuadro;
Procedure CargaFichero(var cuad : TCuadricula);
i,j:sudocuadro;
Fich :text;
{---------------------------------------------------------------------}
for i:=1 to 9 do
  begin
    for j := 1 to 9 do
    begin
     write(Fich,cuad[j,i]);
   end;
         End;
El lo guardar bien pero me lo escribe todo en un sola linea y yo solo quiero que escriba solo 9 números y después que vaya a la linea de abajo y escriba los siguientes números... pero por más que hago no me sale
Este un ejemplo de como tiene que quedarme en el block de notas
819537462
736284951
542961378
173496825
465328197
298715643
687142539
954873216
321659784
Aparece cuad[j,i]... porque el programa desde el principio se hizo para que escribiera columna y después fila... pero ahora como se tiene que imprimir fila y después columna solo lo intercambimos las variables y ya
Ya yo he intentado colocarle writeln, en donde lo escribe, después que acaba el segundo for e intentado también quitarle el primer FOR y solo dejar el de abajo e ir incrementando i en uno, con los while ... pero nada me funciona si sabes otra manera dímela por favor
Agradezco tu respuesta
Ok
Yo cambiaría un par de cosas en los tipos, para hacerlos más comprensibles:
TYPE TNumero:1..9;
TCuadro=ARRAY[LOW(TNumero)..HIGH(TNumero)] OF TNumero;
TTablero=ARRAY[1..3,1..3] OF TCuadro;
Con estos tipos tendríamos desmembrados todo lo que "a simple vista" vemos en un sudoku =D
Pero como mejor te manejes ;)
Yo lo guardaría así:
PROCEDURE Guardar(dir:STRING;VAR cuad:TCuadricula);
VAR fich:TEXT;
       i, j:sudocuadro;//Te aconsejo que a los tipos les pongas una "T" delante, como "TSudocuadro", para distinguir los identificadores de tipo de los de variables
BEGIN
{-------------------------}
 FOR i:=LOW(i) TO HIGH(i) DO //LOW(i) en este caso será 1 y HIGH(i) será 10
  BEGIN
   FOR j:=LOW(j) TO HIGH(j) DO
    BEGIN
     WRITE(fich,cuad[i,j]);//o [j,i]; yo acostumbro a usar "i,j" en ese orden xD
    END;
  WRITELN(fich);
  END;
Cre que es esto lo que preguntabas, no?
Cuando acaba una fila, inserta un salto de línea (#$13+#$10 son los 2 caracteres de salto de línea) gracias al WRITELN(fich);
Luego, continua con las demás
Si no he contestado a tu pregunta, acláramelo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas