RESPONDER UNA PREGUNTA

Si para responder la pregunta, crees necesario enviar un archivo adjunto, puedes hacerlo a traves del correo [email protected]

    Pregunta:  67556 - GUARDAR ESTRUCTURA EN UN ARCHIVO FILAS ENLAZADAS
Autor:  Adrian Cruz
¿Porque no me guarda mi lista en un archivo, me crea ya el archivo pero no me lo guarda, tambien cuando imprimo mi procedimiento de visualizar me envia basura, mi variables es char, lo he querido inicializar pero no se puede inicializar en una estructura AYUDAAAAAAAA

/*Adrian Cruz Alanis
Estructura de Datos
Sistema de reservaciones en club nocturno...
Copyrigth todos los derechos reservados son mios...
*/

#include <iostream>
#include <stdlib.h>
#include <fstream.h>
#include <conio.h> //Librerias...
#include <ctype.h>
#include <stdio.h>
#include <string.h>

//Estructura de nombres.. Tipos de datos..
struct nombres{
char nombre[30]{NULL};
int mesa;
struct nombres *siguiente;
}; typedef struct nombres *e_lista;

//Inicio de funciones y procedimientos...
//Inserta un elemento al inicio
void insertaalinicio(e_lista &lista, char nom[30], int mes)
{
e_lista aux;

ofstream f;
f.open ("Reservaciones.txt", ios::out|ios::app); //Abre el archivo

if(f.fail())
{
cout << "Archivo No Valido";
getch();
}
else
{
aux = new(struct nombres);
aux ->nombre[30] = nom[30];
aux ->mesa=mes;
aux ->siguiente = lista;
lista = aux;
}
f.close();
}

//Inserta un elemento al final...
void insertaalultimo(e_lista &lista, char nom[30], int mes)
{
e_lista t, aux = new(struct nombres);
ofstream f;
f.open ("Reservaciones.txt", ios::out|ios::app);

if(f.fail())
{
cout << "Archivo no valido";
getch();
}
else
{
aux ->nombre[30] = nom[30];
aux ->mesa=mes;
aux ->siguiente = NULL;

if(lista==NULL)
{
lista = aux;
}
else
{
t = lista;
while(t->siguiente!=NULL)
{
t = t->siguiente;
}
t->siguiente = aux;
}
}

f.close();
}

//Inserta un elemento antes o despues...
int insertaizq_der()
{
int op, band;
ofstream f;
f.open ("Reservaciones.txt", ios::out|ios::app);

if(f.fail())
{
cout << "Archivo No Valido";
getch();
}
else
{
cout << endl;
cout << " 1. Antes de la posicion" ;
cout << " 2. Despues de la posicion " ;
cout << " Opcion : ";
cin >> op;

if(op==1)
band = -1;
else
band = 0;

return band;
}
f.close();
}

//Inserta un elemento..
void insertanombre(e_lista &lista, char nom[30],int mes, int posicion)
{
e_lista aux, t;
int i;
aux = new(struct nombres);
aux ->nombre[30] = nom[30];
aux ->mesa=mes;

ofstream f;
f.open ("Reservaciones.txt", ios::out|ios::app);
if(f.fail())
{
cout << "Archivo No Valido";
getch();
}
else
{
if(posicion==1)
{
aux->siguiente = lista;
lista = aux;
}
else
{
int x = insertaizq_der();
t = lista;

for(i=1; t!=NULL; i++)
{
if(i==posicion+x)
{
aux->siguiente = t->siguiente;
t->siguiente = aux;
return;
}
t = t->siguiente;
}
}
cout<<" Posicion no encontrada";
}
f.close();
}

//Visaaliza los elementos de mi lista
void visualiza(e_lista lista)
{
int i = 0;
ifstream f;
f.open ("Reservaciones.txt", ios::in|ios::app);
while(!f.eof())
{
while(lista != NULL)
{
cout << "No. " << "Nombre " << "Mesa";
cout << " " <<' '<< (i+1) << ")"<< " "<< lista -> nombre[30]<< " " << lista -> mesa << " ";
lista = lista->siguiente;
i++;
}
}
f.close();
getch();
}

//Elimina elemento..
void eliminarElemento(e_lista &lista, int mes)
{
e_lista antes, p;
ifstream f;
ofstream nuevo;
do
{
nuevo.open("nuevo.txt",ios::out);
f.open("Reservaciones.txt",ios::in);
}
while(!f.eof());
{
p = lista;

if(lista!=NULL)
{
while(p!=NULL)
{
if(p->mesa == mes)
{
if(p==lista)
lista = lista->siguiente;
else
antes -> siguiente = p -> siguiente;
delete(p);
return;
}
antes = p;
p = p->siguiente;
}
}
else
cout<<"Las mesas estan vacias :(";
}
f.close();
}

//Funcion principal...
int main()
{
e_lista lista = NULL;
char nombre[30];
int mesa;
int posicion;
int opc;
system ("Color f5");
cout << "**Nigth Club 'Tenjune'** Reservaciones:";
do
{
Menu:
cout << " ELIGE UNA OPCION: ";
cout << " 1) Nueva reservacion";
cout << " 2) Ultima reservacion";
cout << " 3) Anclar una reservacion";
cout << " 4) Visualizar reservaciones";
cout << " 5) Elimina reservacion";
cout << " 6) Salida ";
cin>> opc;
switch(opc)
{
case 1:
clrscr();
system("Color f2");
cout << " Nombre:","w";
cin >> nombre;
cout <<" Mesa:","w";
cin >> mesa;
insertaalinicio(lista, nombre, mesa);
break;

case 2:
clrscr();
system("Color f4");
cout << " Nombre:","w";
cin >> nombre;
cout <<" Mesa:","w";
cin >> mesa;
insertaalultimo(lista, nombre, mesa);
break;

case 3:
clrscr();
system("Color f6");
cout << " Nombre:","w";
cin >> nombre;
cout <<" Mesa:","w";
cin >> mesa;
cout << " Posicion :","w";
cin >> posicion;
insertanombre(lista, nombre, mesa, posicion);
break;

case 4:
clrscr();
system("Color f9");
cout << " Lista.. Loading ";
visualiza(lista);
goto Menu;
break;

case 5:
clrscr();
system("Color E4");
cout <<" Mesa:","w";
cin >> mesa;
eliminarElemento(lista, mesa);
break;
}
}
while(opc!=6);
getch();
return (0);
}

Les dejo el codigo, espero que alguien me puede ayudar, me urge

GRACIASSSS


Nombre
Apellidos
Correo
Comentarios