SoloCodigo
Programación General => C/C++ => Mensaje iniciado 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;
}
-
Por favor pon el error que te da, como no tengo nada que hacer lo compile y me dio este:
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
la cambie por y coloce un al final de la funcion, por lo demas no me dio error.
Saludos
-
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...
-
Creo que ya analizando el codigo encontre el error, mira en esta parte:
void agregar();
void crear();
void eliminar();
void imprimir();
estas declarando todas las funciones menos la boolean, agregala por ahi a ver si es eso, algo asi:
void agregar();
void crear();
void eliminar();
void imprimir();
bool vacia();
Saludos :comp:
-
Has pensado que puede que el tipo bool no este definido en el Turbo c++ que usas?
-
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(
-
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??
-
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
-
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):
typedef int bool;
#define true 1
#define false 0
¿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).
-
hey tio sabes mejor usate el compilador de devc++ es mejor compilnado claro repara todos los orrores ke te an pasado estos tios jejeje
-
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??
-
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).
-
Ni hablar si es en realidad Turbo C ...
-
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).
-
: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...