Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[Ayuda] Algoritmos - Archivos y registros
Autor Mensaje
missmetal Sin conexión
Profesor del Modulo A
GG IZI
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 214
Agradecimientos dados: 146
Agradecimientos: 52 en 25 posts
Registro en: Mar 2011
Mensaje: #1
[Ayuda] Algoritmos - Archivos y registros Trabajo practico Algoritmos y Estructuras de Datos
Hola gente linda! Estoy haciendo un trabajo que nos pidió el prof Méndez de Algoritmos. Es aparte del integrador y lo tenemos que hacer los que cursamos con él.
En resumen tengo que armar un sistema de viajes que tiene dos archivos binarios micros.dat y choferes.dat. En esos archivos guardo cada struct de tipo micro y de tipo chofer con los campos correspondientes y blablabla. Tenemos que usar listas (todavía no me doy cuenta si tienen que ser simple o doblemente enlazadas).

La duda que tengo yo es más de la parte algorítmica, no termino de darme cuenta si el manejo de los datos en el programa con los archivos tiene que ser puramente con punteros y nodos y como manejar el tema del ordenado de los datos y la busqueda de un registro en particular. Hay algo que estoy haciendo mal y no me doy cuenta.
Adjunto el pdf con la consigna completa y el pedazo de codigo que me está volviendo loca.



struct Chofer {
char apellido[50];
char nombre[50];
char dni[20];
int nro_contrato;
};

struct NodoListaChoferes
{
Chofer info; // Datos de el nodo
NodoListaChoferes *sgte; // Puntero al siguiente nodo

};

void ListaChoferInsertar (NodoListaChoferes *&n, Chofer x) // inserta un nodo al final del utimo nodo de la lista
{
NodoListaChoferes *nuevo= new NodoListaChoferes();
nuevo->info=x;
if (n!=NULL)
{
nuevo->sgte= n->sgte;
n->sgte = nuevo;
}
else
{
nuevo->sgte= n;
n= nuevo;
}

}

/*TODO: metodo para buscar el dni */
int buscar(char DNI[])
{
FILE *f;
int encontrado =0;
struct Chofer p;
if (f=fopen(ARCHIVOCHOFERES,"rb"))
{
while(!feof(f) && !encontrado)
{
fread(&p,sizeof(Chofer),1,f);
if (strcmp(DNI, p.dni)==0)
{
encontrado = 1;
}
}
if (!encontrado)
printf("No se encontro la persona buscada.\n");
fclose(f);
return 1;
}
return 0;
}
bool ingresarNuevoChofer()
{
FILE *f;
NodoListaChoferes *nodoChoferes = NULL;
Chofer ch;
if (f=fopen(ARCHIVOCHOFERES,"ab"))
{
cout << "Ingrese apellido:" << endl;
cin >> ch.apellido;
cout << "Ingrese nombre:" << endl;
cin >> ch.nombre;
cout << "Ingrese DNI:" << endl;
cin >> ch.dni;
cout << "Ingrese numero de contrato:" << endl;
cin >> ch.nro_contrato;

if(!(buscar(ch.dni)))
{

ListaChoferInsertar(nodoChoferes, ch); /**ACA ME ESTOY HACIENDO LA ENSALADA**/
fwrite(&ch, sizeof(Chofer),1,f);
fclose(f);
return true;
}
else
{
cout << "El numero de documento ingresado ya existe" << endl;
fclose(f);

}

}
return false;

}



Si me dan una mano con eso se los re agradezco!!!!
Saludos!


Archivo(s) adjuntos
.pdf  Trabajo práctico integrador.pdf (Tamaño: 428,51 KB / Descargas: 35)

30-10-2016 19:37
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.