30/08/2010, 19:12
|
| | Fecha de Ingreso: agosto-2010
Mensajes: 10
Antigüedad: 14 años, 4 meses Puntos: 0 | |
Respuesta: Problema con un error de estructura Gestion de libros
Código:
#include <cstdlib>
#include <iostream>
#include <string>
#include <conio2.h>
#include "Libreria.h"
struct L_Libros *cap,*aux,*f,*p;
using namespace std;
void Gestion_de_Libros(void)
{
int op;
struct Libros lib;
do{
gotoxy(36,5); cout << " GESTION DE LOS LIBROS " << endl;
gotoxy(33,6); cout << " -------------------------- " << endl;
gotoxy(33,7); cout << " 1-Introducir Libros " << endl;
gotoxy(33,8); cout << " 2-Borrar Libros " << endl;
gotoxy(33,9); cout << " 3-Visualizar Libros " << endl;
gotoxy(33,10); cout << " 4-Volver al menu principal " << endl;
gotoxy(33,11); cout << " -------------------------- " << endl;
gotoxy(33,13); cout << " Que opcion desea elegir? ";
cin >> op;
switch(op){
case 1: poner_libros();
break;
case 2: Borrar_libros();
break;
case 3: Visualizar_libros();
break;
case 4: system("PAUSE");
return;
exit(1);
}
}while(op!=4);
system("PAUSE");
}
void poner_libros(void)
{
aux=(struct L_Libros *)malloc(sizeof(struct L_Libros));
clrscr( );
cout<< " Introduce el Codigo del Libro: ";
cin>>aux->cod_libro;
aux->seg=NULL;
if (cap==NULL)
cap=aux;
else if (cap->cod_libro > aux->cod_libro)
{
aux->seg=cap;
cap=aux;
}
else
{
p=f=cap;
while (p->cod_libro < aux->cod_libro && p->seg!=NULL)
{
if (p==cap) p=p->seg;
else
{
p=p->seg;
f=f->seg;
}
}
if(p->seg==NULL && p->cod_libro<aux->cod_libro)
{
aux->seg=p->seg;
p->seg=aux;
}
else
{
aux->seg=f->seg;
f->seg=aux;
}
}
cout<< " Introduce el Codigo del Cliente: ";
cin>>aux->cod_clientes;
aux->seg=NULL;
if (cap==NULL)
cap=aux;
else if (cap->cod_clientes > aux->cod_clientes)
{
aux->seg=cap;
cap=aux;
}
else
{
p=f=cap;
while (p->cod_clientes < aux->cod_clientes && p->seg!=NULL)
{
if (p==cap) p=p->seg;
else
{
p=p->seg;
f=f->seg;
}
}
if(p->seg==NULL && p->cod_clientes<aux->cod_clientes)
{
aux->seg=p->seg;
p->seg=aux;
}
else
{
aux->seg=f->seg;
f->seg=aux;
}
}
cout<< " Introduce el nombre del Libro : ";
cin>>aux->nom_libro;
aux->seg=NULL;
if (cap==NULL)
cap=aux;
else if (cap->nom_libro > aux->nom_libro)
{
aux->seg=cap;
cap=aux;
}
else
{
p=f=cap;
while (p->nom_libro < aux->nom_libro && p->seg!=NULL)
{
if (p==cap) p=p->seg;
else
{
p=p->seg;
f=f->seg;
}
}
if(p->seg==NULL && p->nom_libro<aux->nom_libro)
{
aux->seg=p->seg;
p->seg=aux;
}
else
{
aux->seg=f->seg;
f->seg=aux;
}
}
cout<< " Introduce el Autor: ";
cin>>aux->autor;
aux->seg=NULL;
if (cap==NULL)
cap=aux;
else if (cap->autor > aux->autor)
{
aux->seg=cap;
cap=aux;
}
else
{
p=f=cap;
while (p->autor < aux->autor && p->seg!=NULL)
{
if (p==cap) p=p->seg;
else
{
p=p->seg;
f=f->seg;
}
}
if(p->seg==NULL && p->autor<aux->autor)
{
aux->seg=p->seg;
p->seg=aux;
}
else
{
aux->seg=f->seg;
f->seg=aux;
}
}
cout<< " Introduce la Editorial: ";
cin>>aux->editorial;
aux->seg=NULL;
if (cap==NULL)
cap=aux;
else if (cap->editorial > aux->editorial)
{
aux->seg=cap;
cap=aux;
}
else
{
p=f=cap;
while (p->editorial < aux->editorial && p->seg!=NULL)
{
if (p==cap) p=p->seg;
else
{
p=p->seg;
f=f->seg;
}
}
if(p->seg==NULL && p->editorial<aux->editorial)
{
aux->seg=p->seg;
p->seg=aux;
}
else
{
aux->seg=f->seg;
f->seg=aux;
}
}
system("cls");
}
void Borrar_libros(void)
{
int var;
if (cap==NULL) return;
clrscr( );
cout<<"Introduce el codigo de libro a eliminar: ";
cin>>var;
if (cap->cod_libro==var)
{
p=cap;
cap=cap->seg;
free(p);
}
else
{
p=f=cap;
while (p->cod_libro != var && p->seg!=NULL)
{
if (p==cap)p=p->seg;
else
{
p=p->seg;
f=f->seg;
}
}
if (p->seg==NULL && p->cod_libro!=var)
{
cin.get();
cout<<"Este valor no esta en la lista";
cin.get();
cout<<endl;
return;
}
f->seg=p->seg;
free(p);
}
system("cls");
}
void Visualizar_libros(void)
{
if (cap==NULL)
{
cout<<"La llista esta vacia";
cin.get();
return;
}
clrscr( );
aux=cap;
while (aux!=NULL)
{
cout<<aux->nom_libro;
aux=aux->seg;
}
cin.get( );
system("cls");
}
void crear_lista_libros(void)
{
struct L_Libros lib;
FILE *f1;
if((f1=fopen("libros.dat", "rb"))==NULL){
cout << "El archivo \"libros.dat\" no se puede leer." << endl;
cin.get();
exit(1);
}
fread(&lib, sizeof(lib),1,f1);
while(!feof(f1)){
aux=(struct L_Libros *)malloc(sizeof(struct L_Libros));
aux->cod_libro=lib.cod_libro;
strcpy(aux->nom_libro,lib.nom_libro) ;
strcpy(aux->autor,lib.autor);
strcpy(aux->editorial,lib.editorial);
aux->seg=NULL;
if (cap==NULL)
cap=aux;
else if (cap->cod_libro > aux->cod_libro){
aux->seg=cap;
cap=aux;
}else{
p=f=cap;
while (p->cod_libro < aux->cod_libro && p->seg!=NULL){
if (p==cap) p=p->seg;
else{
p=p->seg;
f=f->seg;
}
}
if(p->seg==NULL && p->cod_libro<aux->cod_libro){
aux->seg=p->seg;
p->seg=aux;
}else{
aux->seg=f->seg;
f->seg=aux;
}
}
fread(&lib, sizeof(lib),1,f1);
}
fclose(f1);
}
void guardar_lista_libros(void)
{
struct L_Libros lib;
FILE *f1;
if((f1=fopen("libros.dat", "wb"))==NULL){
cout << "El archivo \"libros.dat\" no se puede leer." << endl;
cin.get();
exit(1);
}
aux=cap;
while(!feof(f1)){
aux->cod_libro=lib.cod_libro;
strcpy(lib.nom_libro,aux->nom_libro);
strcpy(lib.autor,aux->autor);
strcpy(lib.editorial,aux->editorial);
fwrite(&lib, sizeof (lib),1,f1);
aux->seg=NULL;
}
fclose(f1);
}
[/CODE] |