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.