Nada, ya le puedo dar todas las vueltas que quiera que me da errores con la función AnalizarFichero y PedirNumeroPositivo. Yo no me limito a copiar y pegar, como bien dices para aprender hay que entender el código, pero no entiendo porque me da error, pongo en negrita los errores que me indica mi programa:
No he cambiado la función EsPrimo porque he estado probando con la que me dices y no me da bien algunos resultados, pero no pasa nada, dejo esta que tengo quitando la variable que no usaba.
Y también he probado a hacer la función AnalizarFichero de esta otra forma y nada...
Y respecto a a la función MostrarPresentacionPrograma ¿esta bien ahora? porque no entiendo muy bien para que sirve, ya que no es reutilizaba para otros programas ni nada, y me cuesta menos poner un cout con lo que hace el programa que llamar a la función... no se...
Código [Seleccionar]
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
void MostrarPresentacionPrograma (void);
ifstream AnalizarFichero(string);
int PedirNumeroPositivo (ifstream);
bool EsPrimo(int);
int main (void) {
int num;
MostrarPresentacionPrograma ();
ifstream fichero = AnalizarFichero(string);
[b]num = PedirNumeroPositivo (ifstream);[/b]
while (num != 0){
if (EsPrimo (num) == 1)
cout << "El numero " << num << "es primo.\n";
else
cout << "El numero " << num << " NO es primo.\n";
[b]num = PedirNumeroPositivo(fichero);[/b]
}
fichero.close();
cin.get();
return 0;
}
ifstream AnalizarFichero(string nombreFichero) {
ifstream fichero;
cout << "Introduzca el nombre del fichero: " << endl;
getline (cin,nombreFichero);
fichero.open (nombreFichero.c_str());
if(!fichero){
exit (1);
}
return fichero;
}
int PedirNumeroPositivo(ifstream fichero) {
int numero = 0;
if(!fichero.eof())
fichero >> numero;
return numero;
}
void MostrarPresentacionPrograma (){
cout << "Este programa determina si los numeros enteros positivos de un fichero son o no primos" << endl;
}
bool EsPrimo (int num) {
for (int i = 2; i <= num-1; i++){
if (num % i == 0){
return false;
}
}
return num >= 2;
}
No he cambiado la función EsPrimo porque he estado probando con la que me dices y no me da bien algunos resultados, pero no pasa nada, dejo esta que tengo quitando la variable que no usaba.
Y también he probado a hacer la función AnalizarFichero de esta otra forma y nada...
Código [Seleccionar]
bool AnalizarFichero(ifstream &fichero) {
string nombreFichero;
bool fichero_ok = true;
cout << "Introduzca el nombre del fichero: " << endl;
getline (cin,nombreFichero);
fichero.open (nombreFichero.c_str());
if(!fichero){
fichero_ok = false;
}
return fichero_ok;
}
Y respecto a a la función MostrarPresentacionPrograma ¿esta bien ahora? porque no entiendo muy bien para que sirve, ya que no es reutilizaba para otros programas ni nada, y me cuesta menos poner un cout con lo que hace el programa que llamar a la función... no se...