SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: kelpo en Domingo 10 de Septiembre de 2006, 04:13

Título: Ayuda Urgente!!!!
Publicado por: kelpo 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;
}
Título: Re: Ayuda Urgente!!!!
Publicado por: robbie110487 en Domingo 10 de Septiembre de 2006, 09:40
Por favor pon el error que te da, como no tengo nada que hacer lo compile y me dio este:
Citar
main must return int
que por lo visto no es el mismo que te da a ti, supongo que usaras algun compilador de borland, a mi con el minGW me compilo bien solo en la linea
Código: Text
  1. main()
  2.  
la cambie por
Código: Text
  1. int main()
  2.  
y coloce un
Código: Text
  1. return 0;
  2.  
al final de la funcion, por lo demas no me dio error.

Saludos
Título: Re: Ayuda Urgente!!!!
Publicado por: kelpo en Domingo 10 de Septiembre de 2006, 20:09
Mi compilador es Turbo c++ y al compilarlo me resultan dos errores, uno lo pude corregir pero el otro no tengo idea de como...el error esta en la linea 107 en donde dice:

bool vacia()   <------aqui esta el error, al terminar vacia
{
if(estudiante==NULL)
return true;
else
return false;
}

me puse a investigar todas las formas en que se puede declarar una bool pero ninguna me cuadra...ya trate de la otra forma que me dijiste en el otro mensaje pero sin resultado...
Título: Re: Ayuda Urgente!!!!
Publicado por: robbie110487 en Domingo 10 de Septiembre de 2006, 22:22
Creo que ya analizando el codigo encontre el error, mira en esta parte:
Código: Text
  1. void agregar();
  2. void crear();
  3. void eliminar();
  4. void imprimir();
  5.  
estas declarando todas las funciones menos la boolean, agregala por ahi a ver si es eso, algo asi:
Código: Text
  1. void agregar();
  2. void crear();
  3. void eliminar();
  4. void imprimir();
  5. bool vacia();
  6.  

Saludos  :comp:
Título: Re: Ayuda Urgente!!!!
Publicado por: Max_D en Domingo 10 de Septiembre de 2006, 23:53
Has pensado que puede que el tipo bool no este definido en el Turbo c++ que usas?
Título: Re: Ayuda Urgente!!!!
Publicado por: kelpo en Domingo 10 de Septiembre de 2006, 23:57
Me sigue marcando el mismo error aun cuando haya declarado la boolean abajo de los void....ya me estoy desesperando de no encontrar la solucion X(
Título: Re: Ayuda Urgente!!!!
Publicado por: kelpo en Domingo 10 de Septiembre de 2006, 23:59
Como que el tipo bool no puede que este definido en el turbo c++ que tengo?? es acaso asi como una libreria para que funcione el bool??
Título: Re: Ayuda Urgente!!!!
Publicado por: robbie110487 en Lunes 11 de Septiembre de 2006, 00:08
Opino algo similar a Max_D ya que tu codigo me compilo en el minGW (Bajo dev c++) sin ningun problema (excepto el de conio pero eso no es importante), realmente no se que pueda pasar amigo, cambia de compilador :S

Si de plano no te funciona lo que podrias hacer es declarar la funcion tipo int, y que te reorne 1 si es verdadero y 0 si es falso o algo asi...

Saludos
Título: Re: Ayuda Urgente!!!!
Publicado por: Geo en Lunes 11 de Septiembre de 2006, 00:58
Cita de: "robbie110487"
Si de plano no te funciona lo que podrias hacer es declarar la funcion tipo int, y que te reorne 1 si es verdadero y 0 si es falso o algo asi...
Prueba eso o esto (al inicio de tu programa, después de incluir las cabeceras):

Código: Text
  1.  
  2. typedef int bool;
  3. #define true 1
  4. #define false 0
  5.  
  6.  

¿Qué versión de Turbo C++ usas? Es que no lo tengo :P.

----------------------------
Edit:
Ok, tu compilador no tiene definido el tipo bool, ese es el problema (acabo de probar con Turbo C++ 3.0). Haz lo que te comentó robbie (usa un tipo int en tu función) o define el tipo bool como te comenté arriba.

Saludos,
JJ (Geo).
Título: Re: Ayuda Urgente!!!!
Publicado por: Anonymous en Lunes 18 de Septiembre de 2006, 01:07
hey tio sabes mejor usate el compilador de devc++ es mejor compilnado claro repara todos los orrores ke te an pasado estos tios jejeje
Título: Re: Ayuda Urgente!!!!
Publicado por: geobeid en Lunes 18 de Septiembre de 2006, 20:53
Citar
Has pensado que puede que el tipo bool no este definido en el Turbo c++ que usas?


ESO TIENE ALGUNA LOGICA'? OSEA UN BOOL NO DEFINIDO??
Título: Re: Ayuda Urgente!!!!
Publicado por: Geo en Lunes 18 de Septiembre de 2006, 21:25
Cita de: "geobeid"
Citar
Has pensado que puede que el tipo bool no este definido en el Turbo c++ que usas?

ESO TIENE ALGUNA LOGICA'? OSEA UN BOOL NO DEFINIDO??
Se refiere aque no existe el tipo de dato bool, en otras palabras, "no está definido".

El C++ estándar por supuesto que incluye el tipo bool, pero compiladores "antiguos" no lo tienen implementado (como Turbo C++, en este caso).

Saludos,
JJ (Geo).
Título: Re: Ayuda Urgente!!!!
Publicado por: Eternal Idol en Lunes 18 de Septiembre de 2006, 21:41
Ni hablar si es en realidad Turbo C ...
Título: Re: Ayuda Urgente!!!!
Publicado por: Geo en Lunes 18 de Septiembre de 2006, 22:27
Cita de: "Eternal Idol"
Ni hablar si es en realidad Turbo C ...
Debe ser Turbo C++ (yo probé con Turbo C++ 3.0 y no existe el tipo bool), Turbo C no porque por allí tiene en su código la iostream :P.

Saludos,
JJ (Geo).
Título: Re: Ayuda Urgente!!!!
Publicado por: Bicholey en Martes 19 de Septiembre de 2006, 08:36
:P  :P  :P


je je je je yo tengo turbo C una de la veriones mas viejas ni siquiera tiene uso de mouse y no tiene booleana♂5...