• Sábado 14 de Diciembre de 2024, 20:29

Autor Tema:  Relacionar Dos Ficheros De Texto En C  (Leído 2311 veces)

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Relacionar Dos Ficheros De Texto En C
« en: Martes 14 de Junio de 2005, 13:51 »
0
Hola buenas, tengo un problemilla a la hora de hacer una funcion, resulta que me piden, que teniendo un fichero de texto de clientes (nombre, apellidos, dni, y direccion) y uno de coches(tipo, matricula, coste), debo visualizar dad su matricula un coche, y su clienre correspondiente. Y bueno tengo la idea, de que si tengo q abrir los dos ficheros, primero en el de coches, buscar la matricula, pero luego, me pierdo a la hora de relacionar, para buscar el Nif en el de clientes, y q me muestre aquel cliente q tiene ese coche.

Tambien cuenta con un registro binario, (matri, NIF), tengo q hacer uso de este, para relacionar los otros?.

Aqui pongo el codigo q he hecho, si alguien puede ayudarme, para decirme donde tengo el fallo, no consigo q me ejecute bien.

[CODE]
int consultaCocheCliente(int matri)
{
   FILE *fp1, *fp2, *fp3;
   struct vehiculo c1;
   struct propietario p1;
   struct vehiculoPropietario bin;
   
   int coincide = 0;

   fp1 = fopen("vehiculos.txt", "r");

   fp2 = fopen("propietarios.txt", "r");

   fp3 = fopen("vehiculosPropietario.bin", "rb");

   while(fscanf(fp1, "%s %d %f", c1.tipo, &c1.matri, &c1.coste) == 3)
   {
      if(c1.matri == bin.matri)
      {

        while(fscanf(fp2, "%s %s %s %s", p1.nombre, p1.apellidos, p1.NIF, p1.direccion) ==4)
        {
          if(strcmp(p1.NIF, bin.NIF)==0)
          {

                 imprimirCocheMatricula(bin.matri);
                 imprimirPropietarioNIF(p1.NIF);
                coincide = 1;
          }            
        }
      }         
   }
    return(coincide);
   fclose(fp1);
   fclose(fp2);
   fclose(fp3);
}
Gracias
Saludos Maria

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Relacionar Dos Ficheros De Texto En C
« Respuesta #1 en: Martes 14 de Junio de 2005, 14:10 »
0
si ;)
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Relacionar Dos Ficheros De Texto En C
« Respuesta #2 en: Martes 14 de Junio de 2005, 14:30 »
0
Cita de: "JuanK"
si ;)
Vale pero como se hace en C, es q tengo dudas acerca de ello.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Relacionar Dos Ficheros De Texto En C
« Respuesta #3 en: Martes 14 de Junio de 2005, 14:36 »
0
debes tener abiertos los tres archivos y a medida que sacas registros de uno, saces los del otro, es decir:

1- buscas la matricula del automovil en el archivo d automoviles
2- con la matricula buscas en el archivo de autos-nif el NIF correspondiente a esa matricula
3- con el nif buscas en la tabla de nif los datos que faltan.

Por supues que hay muchas maneras de hacerlo, todo depende de comoq uieras y del tamaño los archivos, si son pequeños (menos de 2 mb por archivo) lo que puedes hacer  es cargar todos los archivos, cada uno en un array en memoria y luego hacer las busquedas sobre los arrays.

Si quieres algo mas profesional podrias hacer un ordenamiento de datos y usar algoritmos de busqueda.. pero te quitaria mas tiempo.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Relacionar Dos Ficheros De Texto En C
« Respuesta #4 en: Martes 14 de Junio de 2005, 16:42 »
0
Cita de: "JuanK"
debes tener abiertos los tres archivos y a medida que sacas registros de uno, saces los del otro, es decir:

1- buscas la matricula del automovil en el archivo d automoviles
2- con la matricula buscas en el archivo de autos-nif el NIF correspondiente a esa matricula
3- con el nif buscas en la tabla de nif los datos que faltan.

Por supues que hay muchas maneras de hacerlo, todo depende de comoq uieras y del tamaño los archivos, si son pequeños (menos de 2 mb por archivo) lo que puedes hacer  es cargar todos los archivos, cada uno en un array en memoria y luego hacer las busquedas sobre los arrays.

Si quieres algo mas profesional podrias hacer un ordenamiento de datos y usar algoritmos de busqueda.. pero te quitaria mas tiempo.
Lo primero gracias por responderme, veras seria una cosa asi, en C:

[CODE]
fp1 = fopen("vehiculos.txt", "r");

   fp2 = fopen("propietarios.txt", "r");

   fp3 = fopen("vehiculosPropietario.bin", "rb");

   while(fscanf(fp1, "%s %d %f", c1.tipo, &c1.matri, &c1.coste) == 3)
   {
      
      while(fscanf(fp2, "%s %s %s %s", p1.nombre, p1.apellidos, p1.NIF, p1.direccion) == 4)
      {
         while(fread(&bin, sizeof(struct vehiculoPropietario),1, pf1)==1)
         {

         if(c1.matri == matri)
            {
               encontrado = 1;
               c1.matri = bin.matri;

                 if(strcmp(bin.NIF,p1.NIF )==0){
                                            imprimirCoche(matri);
                                           imprimirCliente(bin.NIF);

Seria algo asi???

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Relacionar Dos Ficheros De Texto En C
« Respuesta #5 en: Martes 14 de Junio de 2005, 17:38 »
0
si ya tienes la idea ;)
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Relacionar Dos Ficheros De Texto En C
« Respuesta #6 en: Martes 14 de Junio de 2005, 18:33 »
0
Cita de: "JuanK"
si ya tienes la idea ;)
Pero no me funciona, porfi, me puedes decir como seria exactamente la funcion.
Gracias