Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/06/2013, 05:34
ecfisa
 
Fecha de Ingreso: julio-2012
Mensajes: 133
Antigüedad: 12 años, 6 meses
Puntos: 22
Respuesta: Problema al leer desde Archivo c++

Hola.

El formato de guardado es bastante inusual y muy, pero muy propenso a equívocos.

Pero si el archivo txt mantiene estrictamente el formato que mostras en tu mensaje, para cargar los datos en la matriz se podría hacer:
Código C++:
Ver original
  1. #include <iostream>
  2. #include <string>
  3. #include <fstream>
  4. #include <cstdlib>
  5.  
  6. using namespace std;
  7.  
  8. int CargarMatriz(float matriz[][2]);
  9. void MostrarMatriz(float matriz[][2], int rows);
  10. ...
  11.  
  12. int main()
  13. {
  14.   float matriz[100][2];  // n alumnos x 2 notas
  15.   int rows = CargarMatriz(matriz);
  16.   MostrarMatriz(matriz, rows);
  17.   ...
  18. }
  19.  
  20. int CargarMatriz(float matriz[][2])
  21. {
  22.   ifstream alumnos("C:\\RegistroNotas.txt",ifstream::in);
  23.   string line;
  24.   int row = 0;
  25.   while(!alumnos.eof()) {
  26.     if(getline(alumnos,line,'\n')){
  27.        if (line.find(":") != string::npos)
  28.         if (line.find("Nota 1") != -1)
  29.           matriz[row][0] = atof(line.substr(line.find(":")+2,line.length()).c_str());
  30.         if (line.find("Nota 2") != string::npos) {
  31.           matriz[row][1] = atof(line.substr(line.find(":")+2,line.length()).c_str());
  32.           row++;
  33.         }
  34.     }
  35.   }
  36.   alumnos.close();
  37.   return row;
  38. }
  39.  
  40. void MostrarMatriz(float matriz[][2], int rows)
  41. {
  42.   cout.precision(2);
  43.   for(int i = 0; i < rows; i++)
  44.     cout << "Alumno " << i+1 << ", Nota 1: " << fixed << matriz[i][0]
  45.          << ", Nota 2: " << fixed << matriz[i][1] << endl;
  46. }
  47. ...
Si fuera un caso real, no un ejemplo, habría que disponer de un arreglo adicional para almacenar los nombres de los alumnos...

Saludos. :)