Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/07/2010, 10:18
negropatagon
 
Fecha de Ingreso: julio-2010
Mensajes: 8
Antigüedad: 13 años, 9 meses
Puntos: 0
De acuerdo Como almacenar datos de un txt en una matriz

Hola , soy nuevo en esto de la programación , me gustaría saber si me pueden ayudar, tengo un problema almacenando datos de un txt. me explico mi txt es el siguiente(entrada0.txt):
----------------------------------------------------------------------------------------------
DM 00000 04000
DM 00000 04001
DM 00000 04002
TR 00000 00000 1
TR 00001 00000 1
TR 00002 00000 1
TR 00003 00001 1
F1 00000 00000 00000 7.954313E-001
F1 00000 00000 00001 7.887622E-001
F1 00000 00000 00002 7.687549E-001
F1 00000 00000 00003 7.354094E-001
CG 00000 00007 4.140173E-011 7.127703E-014 00000 00001
CG 00000 00033 1.648233E-010 7.127703E-014 00000 00000
CG 00001 00002 4.302915E-011 2.937750E-013 00000 00000
CG 00001 00007 1.166859E-011 2.937750E-013 00000 00001
------------------------------------------------------------------------------------------------

La idea es guardar los datos en una matriz [m][n] de DM, otra de TR,F1 y otra de CG.

he estada tratando con getline para obtener la linea, pero al momento de almacenarla en una matriz no me resulta. Todo esto lo hago son funciones.


//--------obtener la linea------------
void getlinea(char linea[],ifstream& celar)
{
char ch[80];
celar.getline(ch,80,'\n');
celar >> linea;

//-----------guardar DM-------------

void getdominio(char linea[2],ifstream& celar, dominioArray & dominio)
{
char dominio[100000][2];

for(int i=0;i<100000;i++){
for(int j=0;j<2;j++)
celar>> dominio[i][j];
cout<<endl;
}
}

el resto de TR,F1 Y CG es similar

primerocreo un swith de esta forma para reconocer lo anterior.

void leerdatos(ifstream & celar,dominioArray & dominio,trayectoriaArray & trayectoria, frecuencia1Array & frecuencia1, cemisglobalArray & cemisglobal)
{
char linea[2];
int numero;
celar >> linea;
while (!celar.eof())
{
numero = 0;

if(strcmp(linea,"DM")==0) numero = 1;
if(strcmp(linea,"TR")==0) numero = 2;
if(strcmp(linea,"F1")==0) numero = 3;
if(strcmp(linea,"CG")==0) numero = 4;

switch (number) {
case 1:
getdominio(linea,celar,dominio);
break;

case 2:
gettrayectoria(linea,celar,trayectoria);
break;

case 3:
getfrecuencia1(linea,celar,frecuencia1);
break;

case 4:
getcemisglobal(linea,celar,cemisglobal);
break;
default:
break;
}
}
celar.close();
}
//-------------mostrar datos---------------------
void despliegadominio(char dominio[][2])
{
for(int i=0;i<100000;i++){
for(int j=0;j<2;j++)
cout<< dominio[i][j]<<' ';
cout<<endl;
}
}

acepto comentarios, puede que para ustedes sea trivial pero para mi que estoy empezando no , espero su ayuda. gracias.