¿Una preguntica tu de casualidad has llegado a programar un sudoku en pascal?
1 respuesta
Respuesta
1
1
Anónimo
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