elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Error en la compilación! (Solucionado)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Error en la compilación! (Solucionado)  (Leído 1,401 veces)
MJI

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Error en la compilación! (Solucionado)
« en: 6 Diciembre 2018, 19:33 pm »

Hola, he empezado con la programación hace poco y tengo un pequeño problema en este programa:


#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int SumaYCuenta(ifstream f, float& suma);


int main(void)
{
    int num_elementos = 0;
    float suma = 0;
    ifstream fich_in;
    string nombre;
    
    cout << "Este programa nos calcula la media de los numeros de un fichero en caso
de que exista algun numero dentro de ese fichero" << endl << endl;
    
    cout << "Dame el nombre del fichero: ";
    cin >> nombre;
    
    fich_in.open(nombre);
    
    if (!fich_in)
        cout << "Error abriendo fichero";
    else
    {
        num_elementos = SumaYCuenta(fich_in, suma);
        
        if (num_elementos != 0)
            cout << "La media es: " << suma / num_elementos;
        else
            cout << "El fichero no contenia ningún elemento.";
    }
    
    fich_in.close();
    
    return 0;
}


int SumaYCuenta(ifstream f, float& suma)
{
    int num;
    int contador = 0;
    
    while(f >> num)
    {
        suma = suma + num;
        contador++;
    }
    
    return contador;
}


-----------------------------------------------------------------------------------------
[Error] use of deleted function 'std::basic_ifstream<char>::basic_ifstream(const std::basic_ifstream<char>&)'

[Error] use of deleted function 'std::basic_ios<char>::basic_ios(const std::basic_ios<char>&)'

[Error] 'std::ios_base::ios_base(const std::ios_base&)' is private

[Error] within this context

[Error] initializing argument 1 of 'int SumaYCuenta(std::ifstream, float&)'


¿Alguien sabe que puedo hacer?
El programa marca la linea 40


« Última modificación: 6 Diciembre 2018, 20:07 pm por MJI » En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.696


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Error en la compilación!
« Respuesta #1 en: 6 Diciembre 2018, 19:51 pm »

Para evitar esto hay que pasar dicho objeto como referencia.

Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. int SumaYCuenta(ifstream &f, float& suma);
  8.  
  9. int main(void) {
  10. int num_elementos = 0;
  11. float suma = 0;
  12. ifstream fich_in;
  13. string nombre;
  14.  
  15. cout << "Este programa nos calcula la media de los numeros de un fichero en caso de que exista algun numero dentro de ese fichero" << endl << endl;
  16. cout << "Dame el nombre del fichero: ";
  17. cin >> nombre;
  18.  
  19. fich_in.open(nombre);
  20.  
  21. if (!fich_in)
  22. cout << "Error abriendo fichero";
  23. else {
  24. num_elementos = SumaYCuenta(fich_in, suma);
  25. if (num_elementos != 0)
  26. cout << "La media es: " << suma / num_elementos;
  27. else
  28. cout << "El fichero no contenia ningún elemento.";
  29. }
  30. fich_in.close();
  31. return 0;
  32. }
  33.  
  34. int SumaYCuenta(ifstream &f, float& suma) {
  35. int num;
  36. int contador = 0;
  37.  
  38. while(f >> num)   {
  39. suma = suma + num;
  40. contador++;
  41. }
  42. return contador;
  43. }
  44.  

El cofigo ya no produce errores, pero tampoco lo probe.

Saludos


En línea

MJI

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Error en la compilación! (Solucionado)
« Respuesta #2 en: 6 Diciembre 2018, 20:08 pm »

Vale, he probado el nuevo código, compila y se ejecuta perfectamente.

Muchas gracias Alberto!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines