[ Foro de C++ ]

Duda registros

10-Jan-2014 18:42
Miguel Valenciano
1 Respuestas

Hola, tengo una duda con los registros. Este es mi registro:

 
struct particula
{
       string simbolo ;
       float masa , carga ;
       short anio ;
 } ;
 


Para intorducir los datos uso:

 
particula DatosNuevaParticula()
{
      particula p ;
 
          cout << "Simbolo: " << endl  ;
          cin >> p.simbolo ;
 
         do
          {
          cout << "Masa: " << endl  ;
          cin >> p.masa ;
          }
          while ( p.masa < 0 ) ;
 
          cout << "Carga: " << endl  ;
          cin >> p.carga 
 
          do
          {
          cout << "Anio de descubrimiento (si lo desconoces escribe '-1') : " << endl ;
          cin >> p.anio ;
          cin.ignore() ;
          } 
          while ( p.anio < -1 ) ;
 
         return p ;   
 }
 


Y los cargo de un fichero mediante esta funcion:

 
int LeerFichero ( particula vector [TAM] )
{
     bool error = false ;
     int i ;
 
     i = 0 ;
 
     fstream f("particulas.txt", ios::in );
 
     if (!f)
     {
            fstream f("particulas.txt", ios::in | 
            ios::trunc ) ;
 
           while ( getline( f , vector[i].simbolo ) )
         {
               getline( f , vector[i].simbolo ) ;
               f >> vector[i].masa  ;
               f >> vector[i].carga ;
               f.ignore () ;
               f >> vector[i].anio ;
               f.ignore () ;
 
               i++ ;
          }
      }
      else
      {
         while ( getline( f , vector[i].simbolo ) )
         {
               getline( f , vector[i].simbolo ) ;
               f >> vector[i].masa  ;
               f >> vector[i].carga ;
               f.ignore () ;
               f >> vector[i].anio ;
               f.ignore () ;
 
               i++ ;
          }
      } 
     f.close() ;
     //Devuelvo la i para saber cuantas fichas hay.
     return i ;
}
 


Mi duda es, cuando leo el fichero guardo los datos en un vector,  sin embargo, cuando introduzco nuevos datos los guardo en el registro,¿cómo podría hacer que los datos guardados en el registro se guarden en la ultima posicion del vector para poder asi, una vez los introduzco trabajar con todos los datos juntos?
Gracias.



11-Jan-2014 21:31
Nacho Cabanes (+31)

Igual que desde fichero haces

 
f >> vector[i].masa  ;
..
i++ ;
 


Desde consola podrías almacenar directamente en la siguiente posición del vector y luego incrementar el contador:

 
cin >> vector[ultimaPosicion].masa  ;
..
ultimaPosicion++ ;
 







(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)