Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Como almacenar datos de un txt en una matriz

Estas en el tema de Como almacenar datos de un txt en una matriz en el foro de C/C++ en Foros del Web. 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. ...
  #1 (permalink)  
Antiguo 20/07/2010, 10:18
 
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.
  #2 (permalink)  
Antiguo 20/07/2010, 11:46
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Como almacenar datos de un txt en una matriz

Haciendo las veces de compilador, aunque un poco mas verboso, al menos te diria:

- getlinea() no lo estas usando. No tiene sentido incluir funciones que no tienen uso.
- getlinea() no parece terminar. Deberias cerrar las llaves que abres.
- El switch usa una variable "number", mientras que en otros lados, usas "numero".
- Muchas funciones invocadas, pero no definidas.
- Muchas variables y parametros se llaman "dominio", aunque al parecer, en el lugar incorrecto.
- Las funciones reciben "linea" como parametro, pero no tiene mucho sentido pasar ese parametro o si?

Algunos de estos errores o advertencias un compilador moderno ya te los hubiera dicho, sugiero que al menos intentes escribir tus ideas en un programa que compila, parece ir bien encaminado lo que ya has escrito, si corriges lo que sugiero

Última edición por CalgaryCorpus; 20/07/2010 a las 11:53
  #3 (permalink)  
Antiguo 21/07/2010, 10:16
 
Fecha de Ingreso: julio-2010
Mensajes: 8
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Como almacenar datos de un txt en una matriz

hola CalgaryCorpus, se me olvido destacar que ese es mi .h
obviamente las funciones las llama en el .cpp

tu me podrias dar un ejemplo de como trabajar los datos, considerando solo el switch que tengo y poder almacenar los datos en matrizes corresposponedientes.??

saludos, gracias!
  #4 (permalink)  
Antiguo 21/07/2010, 10:57
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Como almacenar datos de un txt en una matriz

Cita:
Iniciado por negropatagon Ver Mensaje
... se me olvido destacar que ese es mi .h
obviamente las funciones las llama en el .cpp
No sé si entendí bien. Quieres decir que lo que publicaste es el contenido de un .h? una parte de lo publicado es un .h?

Si es todo lo publicado, no me parece nada de obvio, como tu lo calificas, que existe algun trozo de codigo que invoca a lo que aqui se ve, particularmente porque otras cosas que me parecieron obvias no las corregiste antes de publicarlas.

Un .h no deberia contener funciones, sugiero que tengas en el .h solo prototipo de funciones, no la implementacion de ellas.

Cita:
tu me podrias dar un ejemplo de como trabajar los datos, considerando solo el switch que tengo y poder almacenar los datos en matrizes corresposponedientes.??
En realidad, no.
Prefiero que corrijas el codigo que ya tienes, y revises casos particulares de error.
Por ejemplo. haz un programa que solo lea lineas, sin hacer nada con ellas, mas que imprimirlas.
Haz un segundo programa, basado en este, que en vez de imprimir lineas, imprima la primera palabra de la linea
etc
etc
etc

Una vez que tengas dudas puntuales, las publicas. Publicar una pregunta generica resulta muy larga de responder.

Última edición por CalgaryCorpus; 21/07/2010 a las 11:31
  #5 (permalink)  
Antiguo 21/07/2010, 11:43
 
Fecha de Ingreso: julio-2010
Mensajes: 8
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Como almacenar datos de un txt en una matriz

ok trabajare en eso, dame un poco de tiempo y te mostrare lo que tengo, gracias!
saludos.
  #6 (permalink)  
Antiguo 21/07/2010, 13:03
 
Fecha de Ingreso: julio-2010
Mensajes: 8
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Como almacenar datos de un txt en una matriz

hola de nuevo, estoy haciendo lo que me dijiste, pero me tengo un problema , creo que estoy retornando mal un char,

esto es lo que tengo en el .cpp

#include<iostream>
#include<iomanip>
#include<fstream>
using namespace std;

#include"LecturaDatos.h"

int main ()
{
char * linea_temporal;
linea_temporal=leer_archivo("entrada3.txt");
cout<< "-- --"<< endl;//(1)
cout<< linea_temporal<< endl;(2)
getchar();
return 0;
}

en el .h tengo esto:

#ifndef LECTURADATOS_H
#define LECTURADATOS_H

char* leer_archivo(char nombre_archivo[10])
{
char linea[80];
char* linea2;
ifstream celar(nombre_archivo, ifstream::in);

if (celar.is_open()){
cout<< "1"<< endl;
while(!celar.eof())
{//cout<< "2"<< endl;
celar.getline(linea, 80);
cout<< linea<< endl;
}
}
linea2=get(linea); //(en esta linea me manada el error, que puede ser??)
celar.close();
cout<< "-- --"<< endl;
// cout<< linea2<< endl;
return linea;
}
#endif

ademas cuendo lo ejecuto me lee los datos pero no me muestra 1 antes de 2.

porfa acepto ideas, gracias.

Etiquetas: almacenar, matriz, txt
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:58.