Para problemas diferentes mejor abrir un tema nuevo Por si a alguien más le interesa uno de los dos temas...
Lo primero que tienes que pensar es qué funciones quieres usar. Es decir, piensa quiero una función que haga tal cosa y luego piensa cómo implementarla, por ejemplo, quiero una función que me diga si el fichero se pudo abrir correctamente.
Lo primero que tienes que pensar es qué funciones quieres usar. Es decir, piensa quiero una función que haga tal cosa y luego piensa cómo implementarla, por ejemplo, quiero una función que me diga si el fichero se pudo abrir correctamente.
- Qué necesito? Pasarle el nombre del fichero o el propio fichero (yo diría que mejor el nombre).Código (cpp) [Seleccionar]
<retorno> ficheroAbiertoCorrectamente(string nombre_fichero);
Ahora miramos el retorno. - Qué va a hacer la función? Dos posibilidades:
- El fichero se abre correctamente.
- El fichero no se abre correctamente.
Idea 1:Código (cpp) [Seleccionar]
bool ficheroAbiertoCorrectamente(string nombre_fichero);
// Comprueba si se abrio bien y devuelve true si se abrio bien o false si no se abrio
// Problema: Tenemos que abrir el fichero en la funcion para comprobar si se abrio bien y al salir de la funcion volver a abrirlo otra vez
ifstream abrirFichero(string nombre_fichero);
// Comprueba si se pudo abrir el fichero y en caso de que si, lo devuelve abierto
// Problema: y si no lo pudo abrir? Tendremos que hacer que el programa termine si no se pudo abrir
Si quieres puedes pensar tu propia alternativa, no tiene que ser una de esas dos, pero es para que te hagas una idea. Haz eso con cada función que vayas a crear. Piensa en grande, es decir, piensa en que cada función tiene que hacer una cosa específica y de la mejor forma posible.
Un truco es escribir el <main> de forma que se entienda a simple vista, por ejemplo:Código (cpp) [Seleccionar]
int main(){
fichero = abrirFichero();
numero = leerNumero();
if(esPrimo(numero))
cout << numero << " es primo" << endl;
else
cout << numero << " no es primo" << endl;
}
Y en base a eso crear las funciones añadiendo los parámetros que veas que necesitas, poniendo los retornos que necesitas, etc.
Tampoco te pases con las funciones, es decir, no empieces a meter una función dentro de otra y esta dentro de otra... Porque se hará demasiado lioso y no te valdrá la pena encapsular tanto. Tienes que encontrar el término medio. Piensa que una función es un trozo de código que puedes usar muchas veces en diferentes programas. Haz funciones que sean reutilizables.
Por ejemplo, puedes pensar en hacer una función que te muestre por pantalla si un número es primo o no, pero... y si en algún momento quieres saber si el número es primo pero no quieres mostrarlo por pantalla? (como en tu ejercicio anterior). Pues mejor hacer una función que te diga si es primo o no, sin mostrar nada y tú verás en cada situación si quieres mostrar por pantalla el resultado obtenido o no.
Comenta los avances que consigas empleando esta técnica y cuando pueda te seguiré ayudando. Suerte