Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - jona_x17

#1
Programación C/C++ / Editar ficheros con c++
1 Junio 2015, 19:57 PM
hola intento hacer el código de un programa en dev-c++ como ejercicio de clases, no pido una solución sino algo de ayuda ya que es algo en lo que me veo superado
Se trata de hacer un "buscador" que ordene información de un fichero.
con datos separados por ";"
ejemplo de fichero.txt fuente:
nombre1; apellido1; 30; trabajo1
nombre2; apellido2; 30; trabajo2
nombre3; apellido3; 25; trabajo1


y se trata de ordenar la información en dos nuevos documentos.

ejemplo año.txt:
25
nombre3; apellido3; trabajo1

30
nombre1; apellido1; trabajo1;
nombre2; apellido2; trabajo2;


ejemplo trabajo.txt:

trabajo1
nombre1; apellido1; 30
nombre3; apellido3; 25

trabajo2
nombre2; apellido2; 30


El código que de momento tengo es el siguiente (ni de casualidad es parte de la solución final)


codigo:
Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
struct st{
string nombre;
string apellido;
int año;
int trabajo;
};

int main () {
st s[11];
   ifstream fichero ("fichero.txt");
   ofstream año ("año.txt",ios::app);
   ofstram trabajo ("trabajo.txt",ios::app);
   
   string linea;
   int cont=0;
   int pc;
   
   while(fichero.good()){
    getline(fichero, linea);
    pc=linea.find(";");
    s.nombre[cont]=linea.erase(0,pc);
    linea=linea.erase(0,pc+1);
    cont++; // no se como indicar que empiece a leer desde la siguiente linea al volver a pasar por el while la próxima vez (con todos)
   }
   cont=0;
   while(fichero.good()){
    getline(fichero, linea);
    pc=linea.find(";");
    s.apellido[cont]=linea.erase(0,pc);
    linea=linea.erase(0,pc+1);
    cont++;
   }
   cont=0;
   while(fichero.good()){
    getline(fichero, linea);
    pc=linea.find(";");
    s.año[cont]=linea.erase(0,pc);
    linea=linea.erase(0,pc+1);
    cont++;
   }
   cont=0;
   while(fichero.good()){
    getline(fichero, linea);
    pc=linea.find(";");
    s.trabajo[cont]=linea.erase(0,pc);
    linea=linea.erase(0,pc+1);
    cont++;
   }
     
   fichero.close();;
   año.close();
   trabajo.close();  
   system ("PAUSE");
   return 0;
}

Cualquier consejo, para como introducir la información a la estructura o si en vez de una estructura es mejor usar una matriz o vector, alguna cosa que me permita salir de este punto muerto se agradece. Al igual que en caso de olvidarme de alguna librería o el uso de alguna función.
El ejercicio se trata de peliculas, si no he podido cambiar algun dato referente a titulo o director o algo lo menciono para no ocacionar ningun error a nadie. gracias


Mod: los códigos deben ir en etiquetas GeSHi