Título: duda freopen Publicado por: pony012 en 19 Julio 2010, 16:10 pm bueno, pues según lo que leí el freopen sirve para abrir un archivo y asignarlo para el flujo de datos de entrada o de salida, por ejemplo, yo lo estoy usando para llenar unas matrices en un programa que intenta resolver algun sudoku, y mi problema es que no se como cerrar el archivo, y como lo asigno para que de ahi vengan los datos de entrada, pues ya no puedo aplicar algo para que el usuario salga del programa sin matarlo.
y esa es mi duda, como cerrar un archivo o volver a que los datos de entrada entren por el teclado y no por el archivo. Por si lo quieren revisar, este es el codigo del programa, aun me falta mucho, pues ahora solo resuelve sudokus faciles, ya despues le intentare meter backtracking, pero por ahora es solo esto :P Código y los archivos sudoku y config contienen: sudoku.txt Código: 0 0 0 0 4 3 0 0 6 y config.txt Código: 1 1 1 2 2 2 3 3 3 Título: Re: duda freopen Publicado por: MIG80 en 20 Julio 2010, 04:43 am bueno.. no se si freopen() se puede usar dos veces para hacer que la entrada venga desde un archivo..
Código pero creo que el segundo freopen() no es necesario dado que se puede inicializar el arreglo con los valores deseados en lugar hacerlo durante la ejecucion del programa Código
Título: Re: duda freopen Publicado por: Og. en 20 Julio 2010, 06:58 am Solo vi el codigo por arriba, el config.txt lo usas para saber en que cuadro esta el numero cierto?
yo haria esto: Código
Esta función te regresara un arreglo de booleanos numerados del 0 al 8 que te dirán que ficha puede entrar. Por ejemplo si te regresa: 000100011, significa que puedes meter un 4, 8 o 9. A. no olvides liberar la memoria cuando la desocupes. Saludos! Edit: una duda, es la tarea de backtracing de padilla? (no me hagan caso si no son de Jalisco, tal ves estoy confundiéndome xD) Título: Re: duda freopen Publicado por: MIG80 en 20 Julio 2010, 09:15 am lo mismo.. pero mas rapido ::)
Código la verificacion de si la casilla esta ocupada o no se hace fuera de la funcion: Código y ya no hace falta liberar la memoria ocupada por 'p' despues de cada llamada Saludos :) Título: Re: duda freopen Publicado por: Littlehorse en 20 Julio 2010, 11:05 am Bueno, volviendo al tema principal! :D
Citar bueno, pues según lo que leí el freopen sirve para abrir un archivo y asignarlo para el flujo de datos de entrada o de salida, por ejemplo, yo lo estoy usando para llenar unas matrices en un programa que intenta resolver algun sudoku, y mi problema es que no se como cerrar el archivo, y como lo asigno para que de ahi vengan los datos de entrada, pues ya no puedo aplicar algo para que el usuario salga del programa sin matarlo. y esa es mi duda, como cerrar un archivo o volver a que los datos de entrada entren por el teclado y no por el archivo. Lo primero es saber que no hay una forma estandar de hacer lo que pides, tal vez algo rebuscado se pueda lograr, pero no exactamente lo que pides. Los aspectos subyacentes especificos de cada sistema hacen que sea imposible que el estandar pueda abarcarlos todos. Dicho eso, la mejor opción dependerá mayormente del sistema en el que estés trabajando. Así que basicamente podes abstraer en una librería los algoritmos que necesites dependiendo de los sistemas en los cuales quieres que el programa funcione, o bien utilizar alguna librería multi-plataforma ya desarrollada y testeada (como Boost, por ejemplo). Algo como esto: Código
probablemente te funcione siempre y cuando estés en un sistema Windows, y obviamente, que los streams estén asociados a la consola. Eso si, teniendo en claro que seria la peor forma de hacerlo, por la falta de portabilidad y porque este método puede ser propenso a errores en el caso que las redirecciones tiendan a aumentar de complejidad. También cabe aclarar que realmente no veo que sea necesario redirigir los streams en la idea que plantea el algoritmo. Seria bastante mas eficiente y flexible elaborar un modulo que se encargue de la lectura y el procesado de un formato de archivo, y en todo caso en cambios futuros solo necesitarías cambiar ese modulo Para no extenderme mucho mas, lo primero seria que aclares en que sistema necesitas que funcione para poder guiarte adecuadamente. Si la respuesta es elaborar un algoritmo multi-plataforma, probablemente encuentres algún código hecho con Boost si buscas sobre redirecciones de streams en Google. Saludos! |