5
« en: Domingo 10 de Septiembre de 2006, 04:13 »
tengo un error en la sintaxis de este programa....pero por mas que tratao no logro solucionarlo...quien sabe porque ya tengo muy poco tiempo para entregarlo o no se....espero me puedan ayudar por favor!!! se los agradeceria mucho!!! les dejo aqui el codigo fuente:
#include <conio.h>
#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
#include <fstream.h>
#include <ctype.h>
#include <string.h>
struct estdte /*tu puedes cambiar las declaraciones por la que necesites*/
{
char Ncontrol[15];
char nombre[20];
char apellidos[30];
char carrera[20];
char grupo[5];
char semestre[10];
char edad[10];
struct estdte*siguiente;
struct estdte*anterior;
};
struct estdte*estudiante;
void agregar();
void crear();
void eliminar();
void imprimir();
//_________________________
void main()
{
char opcion='A';
crear();
while(opcion!='S')
{
cout<<""<<endl;
cout<<"QUE DESEA HACER"<<endl;
cout<<""<<endl;
cout<<"A->Agregar Elemetos"<<endl;
cout<<"E->Eliminar"<<endl;
cout<<"I->Imprimir"<<endl;
cout<<"S->Salir"<<endl;
cout<<""<<endl;
cout<<"Elija su opcion...:";
cin>>opcion;
cout<<""<<endl;
opcion=toupper(opcion);/*el toupper Cambia la letra que cacha el teclado a mayuscula. */
switch(opcion)
{
case'A':agregar();break; //aqui llamas cada uno de los voids.....
case'E':eliminar();break;
case'I':imprimir();break;
}
}
}
//_________________________
void agregar()
{
struct estdte*esttemp;
esttemp=new estdte;
if(esttemp!=NULL)
{
cin.ignore();
cout<<"Introduzca el No. de control...:";
cin.getline(esttemp->Ncontrol,15);
cout<<"Introduzca el nombre...........:";
cin.getline(esttemp->nombre,20);
cout<<"Introduzca el apellido.........:";
cin.getline(esttemp->apellidos,30);
cout<<"introduzca la carrera..........:";
cin.getline(esttemp->carrera,20);
cout<<"Introduzca el grupo............:";
cin.getline(esttemp->grupo,5);
cout<<"Introduzca el semestre.........:";
cin.getline(esttemp->semestre,10);
cout<<"Introduzca la edad.............:";
cin.getline(esttemp->edad,10);
esttemp->siguiente=estudiante;
esttemp->anterior=NULL;
if(estudiante!=NULL)
estudiante->anterior=esttemp;
estudiante=esttemp;
}
else
cout<<"NO HAY SUFICIENTE MEMORIA";
return;
}
//_________________________
void crear()
{
estudiante=new estdte;
estudiante=NULL;
return;
}
//_________________________
bool vacia() //******AQUI ESTA EL ERROR**********//
{
if(estudiante==NULL)
return true;
else
return false;
}
//_________________________
estdte *fultimo()
{
estdte*aux;
aux=estudiante;
while(aux->siguiente!=NULL)
aux=aux->siguiente;
return aux;
}/*esta es una pequeña estructura que la vamos a utilizar para generar un puntero al ultimo elemento*/
void eliminar()
{
char NoControl[11];
bool encontrado = false;
estdte*esttemp;
estdte*estaux;
cin.ignore ();
cout<<"Introduzca el numero de control del alumno que va ha borrar";
cin.getline(NoControl,11);
esttemp=estudiante;
estaux=estudiante;
while(esttemp!=NULL && !encontrado)
{
if(stricmp(esttemp->Ncontrol,NoControl)==0)
{
encontrado=true;
if(esttemp->anterior==NULL || esttemp->siguiente==NULL)
{
estudiante=estudiante->siguiente;
if (estudiante!=NULL)
estudiante->anterior=NULL;
}
else
{
estaux=esttemp->anterior;
estaux->siguiente=esttemp->siguiente;
estaux=esttemp->siguiente;
estaux->anterior=esttemp->anterior;
//encontrado=true;
break;
}//fin else
}//fin del if
esttemp=esttemp->siguiente;
}//fin de while
if(!encontrado)
cout<<"El numeor de control no existe";
else
cout<<"Eliminado...";
return;
}
/*fin del void eliminar*/
void imprimir()
{
struct estdte*esttemp;
esttemp=new estdte;
esttemp=estudiante;
if(esttemp!=NULL)
while(esttemp!=NULL)
{
cout<<esttemp->Ncontrol<<"\t";
cout<<esttemp->nombre<<"\t";
cout<<esttemp->apellidos<<"\t";;
cout<<esttemp->carrera<<"\t";
cout<<esttemp->grupo<<"\t";
cout<<esttemp->semestre<<"\t";
cout<<esttemp->edad<<endl;
esttemp=esttemp->siguiente;
}
else
cout<<"No hay elementos en la lista para imprimir";
return;
}