elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con ficheros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con ficheros  (Leído 1,538 veces)
DeIMachine

Desconectado Desconectado

Mensajes: 41


Ver Perfil
Problema con ficheros
« en: 12 Diciembre 2015, 16:28 pm »

Hola a todos, estoy trabajando con ficheros y quiero que extraiga de un fichero de texto la fecha y el sexo de las personas, el fallo es que en cuando compilo me da solamente la fecha del primer elemento de la tabla todo el rato independientemente del valor de i en tFecha[ i ], debe ser algun fallo pequeño, os paso el código entero por partes, gracias de antemano:
MAIN:
Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include "gestionFicheros.h"
  4. #include "persona.h"
  5. using namespace std;
  6.  
  7. int main(){
  8.    int numDatos=676;
  9.    int tFechas[numDatos];
  10.    bool tSexo[numDatos];
  11.    leerDatosFormatoT01("Personas.txt",tFechas,tSexo,numDatos);
  12.    cout<<tFechas[3]<<endl;
  13.    return 0;
  14. }
  15.  
  16.  



Código
  1. gestionFicheros.cpp:
  2.  
  3. #include <iostream>
  4. #include <fstream>
  5. #include "persona.h"
  6. #include "gestionFicheros.h"
  7. using namespace std;
  8.  
  9. void leerDatosFormatoT01(const char nombre[],int tFechas[],bool tSexo[],int& numDatos){
  10.    ifstream f;
  11.    f.open(nombre);
  12.    if(f.is_open()){
  13.        for(int i=0;i<numDatos;i++){
  14.            int d,m,a;
  15.            bool sexo;
  16.            Persona T[numDatos];
  17.            f >> d >> m >> a >> sexo;
  18.            T[i]=definirPersona(d,m,a,sexo);
  19.            tFechas[i]=nacido(T[i]);
  20.            tSexo[i]=esMujer(T[i]);
  21.  
  22.        }
  23.        f.close();
  24.    }
  25.    else{
  26.        cerr<<"No se ha abierto el archivo " << nombre << endl;
  27.    }
  28. }
  29.  
  30.  
  31.  

persona.cpp:
Código
  1. #include "persona.h"
  2.  
  3. Persona definirPersona(int d, int m, int a, bool esMujer){
  4.    Persona p;
  5.    p.fecha=a*10000+m*100+d;
  6.    p.mujer=esMujer;
  7.    return p;
  8. }
  9.  
  10.  
  11. int nacido(Persona p){
  12.    return p.fecha;
  13. }
  14.  
  15. bool esMujer(Persona p){
  16.    return p.mujer;
  17. }
  18.  
  19.  

El programa lee un fichero const char nombre[] de estet tipo:
d m a sexo

por ejemplo:
20 01 1934 FALSE
20 11 1997 TRUE

Ejemplo de mi fallo con el main, cuando se supone que cada fecha tendría que ser diferente:
fecha(T[0])=19340120
fecha(T[1])=19340120
fecha(T[2])=19340120


« Última modificación: 12 Diciembre 2015, 16:48 pm por DeIMachine » En línea

La tradición es la mortaja de la sabiduría.
user-marcos

Desconectado Desconectado

Mensajes: 159


Ver Perfil
Re: Problema con ficheros
« Respuesta #1 en: 12 Diciembre 2015, 17:42 pm »

-Estas seguro que la posición es correcta de: Persona T[numDatos];


En línea

DeIMachine

Desconectado Desconectado

Mensajes: 41


Ver Perfil
Re: Problema con ficheros
« Respuesta #2 en: 12 Diciembre 2015, 23:06 pm »

No lo estoy del todo jajaj  un amigo que me vio el código tambien me dijo que era una tonteria crear una tabla de nuevo en el bucle pero he cambiado el codigo y el error que me daba esta vez que lo ultimo que leia, el booleano que indicaba el sexo podia ser de caracter numerico (0,1) o alfanumerico(false,true). Hasta que no utilice el manipulador boolalpha no me funcionaba el programa ya que en el texto aparece true,false. Paso el codigo por aqui por si alguien le quiere echar un vistazo:
Código
  1. void leerDatosFormatoT01(const char nombre[],int tFechas[],bool tSexo[],int& numDatos){
  2.    ifstream f;
  3.    f.open(nombre);
  4.    if(f.is_open()){
  5.        int i=0;
  6.        while(!f.eof()){
  7.            int d,m,a;
  8.            bool sexo;
  9.            Persona T[numDatos];
  10.            f >> d >> m >> a >>boolalpha>>sexo; //IMPORTANTE:  BOOLALPHA INDICA QUE EL BOOLEANO VA A TENER UNA SALIDA ALFANUMERICA Y NO NUMERICA(0,1)
  11.            T[i]=definirPersona(d,m,a,sexo);
  12.            tFechas[i]=nacido(T[i]);
  13.            tSexo[i]=esMujer(T[i]);
  14.            i++;
  15.        }
  16.        numDatos=i;
  17.        f.close();
  18.    }
  19.    else{
  20.        cerr<<"No se ha abierto el archivo " << nombre << endl;
  21.    }
  22. }
  23.  
  24.  
  25.  
En línea

La tradición es la mortaja de la sabiduría.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con envio de ficheros
Java
Debci 4 2,683 Último mensaje 26 Agosto 2009, 10:03 am
por Debci
problema con programa de ficheros en c
Programación C/C++
Quake-man 1 2,524 Último mensaje 10 Septiembre 2010, 18:39 pm
por nicolas_cof
iDStore lista ficheros y directorios ocultos de ficheros .DS_Store
Nivel Web
MichBukana 0 3,514 Último mensaje 29 Agosto 2013, 09:21 am
por MichBukana
PROBLEMA CON FICHEROS :V
Programación C/C++
CHETO1234 3 1,521 Último mensaje 17 Enero 2016, 23:11 pm
por lfgmespino
problema con ficheros :/
Programación C/C++
snowspring 4 2,385 Último mensaje 4 Junio 2018, 20:29 pm
por snowspring
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines