• Viernes 8 de Noviembre de 2024, 13:49

Autor Tema:  Problema Usando While, Ifstream Para Leer Archivo  (Leído 1761 veces)

alexistkd

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Problema Usando While, Ifstream Para Leer Archivo
« en: Jueves 10 de Abril de 2008, 21:59 »
0
Buenas quisiera ver si me ayudan en este programa hecho en devc++ que estoy tratando de terminar es algo simple, el programa lee un archivo y dentro del mismo contiene una cantidad X de numeros que representan calificaciones una debajo de la otra y al final calcula el promedio de los X numeros osea suma y divide entre X veces, utilize while ifstream y demas pero no logro sacar el promedio de las calificaciones aqui esta el codigo. Lo que falla es sacando el promedio no logro figurar como hacer que lea todas las notas y las sume entre si y luego las divida entre el numero de calificaciones para sacar el promedio final. Gracias de antemano

Código: Text
  1.  
  2. #include <fstream>
  3. #include <iostream>
  4. #include <iomanip>
  5.  
  6. using std::ifstream;
  7. using namespace std;
  8. char nombredelarchivo[] = "calificaciones.txt";
  9. double promedio=0;
  10. double notas=0;
  11. double suma=0;
  12. int i=0;
  13. main()
  14. {
  15. ofstream calificaciones;
  16. cout<<"REPORTE DE CALIFICACIONES";
  17. cout<<"\n\n";
  18. i++;
  19. suma += notas;    
  20. ifstream archivo("calificaciones.txt", ios::in);  
  21. if(archivo.fail())
  22. cout<<"error al abrir el archivo"<< endl;
  23. else
  24. while(!archivo.eof())
  25. {
  26. archivo.getline(nombredelarchivo, sizeof(nombredelarchivo));
  27. cout<<nombredelarchivo<<endl;
  28. }
  29. cout<<"\n\n";
  30. cout<<"PROMEDIO FINAL: ";
  31. cout<< notas/i << endl;
  32. cout<<"\n\n";
  33.  
  34. archivo.close();
  35. system("pause");
  36. return 0;
  37. }
  38.  
  39.  

daltomi

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Problema Usando While, Ifstream Para Leer Archivo
« Respuesta #1 en: Sábado 12 de Abril de 2008, 00:31 »
0
Tienes varios errores, te propongo que compares tú código con el que expongo y veas los reemplazos y agregados que realicé..
El formato del archivo de calificaciones es:
Código: Text
  1.  
  2. 32 111
  3. 4
  4. 55
  5. 2
  6. 5
  7. 7
  8. 2
  9. 4
  10. 5
  11.  
Como ves no es necesario que los datos esten totalmente en filas y estudiando el código podrás ver el porque se puede implementarlo así.

Código: Text
  1.  
  2. /*Linux, g++ v.4.1.2*/
  3. #include <iostream>
  4. #include <iomanip>
  5. #include <fstream>
  6. #include <vector>
  7. #include <cstdio>
  8. using namespace std;
  9.  
  10.  
  11. int main(int argc,char* argv[])
  12. {
  13.     vector<int> vInt;
  14.    
  15.     ifstream inCalif("calificaciones.txt");
  16.     if( !inCalif )
  17.     {
  18.         cerr << "Error en Apertura de Archivo.";
  19.         return EXIT_FAILURE;
  20.     }
  21.    
  22.     int  i;
  23.     double dResult;
  24.     while( (inCalif >> i) )
  25.     {
  26.         vInt.push_back(i);
  27.     }
  28.     inCalif.clear();
  29.     inCalif.close();
  30.  
  31.     vector<int>::iterator pos = vInt.begin();
  32.     vector<int>::iterator vend = vInt.end();
  33.  
  34.     cout << "Las calificaciones son:\n";
  35.     while( pos != vend)
  36.     {
  37.         cout << *pos << '\t';
  38.         dResult += *pos++;
  39.     }
  40.     dResult /= vInt.size();
  41.     cout << endl;
  42.     cout << "El promedio es: " << setprecision(3) <<  dResult << endl;;
  43.    
  44.     return EXIT_SUCCESS;
  45. }
  46.  
  47.  
Saludos.

alexistkd

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Re: Problema Usando While, Ifstream Para Leer Archivo
« Respuesta #2 en: Sábado 12 de Abril de 2008, 06:19 »
0
Entiendo ya estoy viendo ahora mismo mis errores ya me esta quedando mas claro esto de abrir y leer archivos en c++ excelente codigo gracias lo implementare a mi codigo final mil gracias nuevamente te lo agradezco seguire estudiando mas y mas cada dia jeje :)