Mensajes [6] - Enviado el Sabado 16 de Junio de 2007 a las 23:28hs
/*
Bajo Licencia GPL
Distribuyase bajo General Public Licence
http://carlossing.byethost7.com
Por CarloS Sing Ramos
[email protected]
[email protected]
Los invito a formar parte de cosol-chimbote.org
cotactenme:
[email protected]
*/
#include
#include
#include
#include
//Definir estructura
struct paciente { char nombre[20];
int edad; }; //Definir nodo
struct nodo { paciente info;
nodo *sgte; };
nodo *cola; //Nodo que almacena la 1ra posici?n de la cola
int menu()
{ int op;
do { system("cls");
cout<<"
http://carlossing.byethost7.com
" ;
// <<"http://www.cosol-chimbote.org*
"
cout<<"===========================
";
cout<<" MENU RINCIPAL
";
cout<<"===========================
";
cout<<" 1.Registrar Paciente
";
cout<<" 2.Reportar Pacientes
";
cout<<" 3.Numero de Pacientes en espera
";
cout<<" 4.Eliminar Paciente
";
cout<<" 5.Buscar el Menor
";
cout<<" 6.Buscar paciente
";
cout<<" 7.Ordenar
";
cout<<" 8.Salir
";
cout<<"============================
";
cout<<" Opcion : ";
cin>>op;
}while (!(op>0 && op<9)); //valida que opci?n este en rango de 1 a 5
return op;
}
void registrar()
{
nodo *q,*r;
system("cls");
q=new nodo;
if (q==NULL)
{ cout<<"No existe memoria disponible..!";
cin.get(); cin.ignore();
exit(0);
}
cout<<"Nombre : "; cin>>q->info.nombre;
cout<<"Edad : "; cin>>q->info.edad;
q->sgte = NULL;
if (cola==NULL)
cola=q;
else {
r=cola;
while (r->sgte!=NULL)
r=r->sgte; //Avanza hasta el final de la cola
r->sgte=q;
}
}//Fin Registro
void reporte() {
nodo *q;
system("cls");
if (cola==NULL){
cout<<"No existen datos"<
return;
}
q=cola;
while (q!=NULL)
{
cout<
}
cin.get(); cin.ignore();
}//Fin reporte
void eliminar()
{ nodo *q;
if (cola==NULL)
{
cout<<"No existen elementos en la Pila?endl"; cin.get(); cin.ignore();
return;
}
q=cola;
if (q->sgte!=NULL)
cola =q->sgte;
else
cola= NULL;
delete q;
}//Eliminar
void cantidad()
{
int elem=0;
nodo *q;
system("cls");
if (cola==NULL) return;
q=cola;
while (q!=NULL)
{
q=q->sgte;
elem++;
}
cout<<"EI Numero de Elementos es : "<
void liberar()
{ //Esta funcion permite liberar la memoria reservada.
nodo *q;
system("cls");
while (cola!=NULL)
{
q =cola->sgte;
delete cola;
cola=q;
}
}//Fin Libera
void buskar()
{
nodo *q;
int may=0,min,con;
char nomb[20];
system("cls");
if (cola==NULL){
cout<<"No existen datos"<
return;
}
q=cola;
while (q!=NULL)
{
if((q->info.edad)>may)
{ may =(q->info.edad); }
q =q->sgte;
}
//cout<
q = cola;
while (q!=NULL)
{
if((q->info.edad)
strcpy(nomb,q->info.nombre); }
q =q->sgte;
con++;
}
cout<<"La edad minima es: "<
}//Fin reporte
void buska_nom()
{
nodo *q;
int may=0,min,con,sw=0;
char nomb[20];
system("cls");
if (cola==NULL){
cout<<"No existen datos"<
return;
}
q=cola;
cout<<"Ingrese el Nombre a Buskar"<
cout<<"==============================================="<
{
if((strcmp(q->info.nombre,nomb))==0)
{ cout<
sw=1; }
q =q->sgte;
}
if(sw==0)
{
cout<<"No se ha encontrado el Nombre"<
cin.get(); cin.ignore();
}
void ordenar()
{
nodo *aux,*x,*z; // Declaro 3 auxiliares
int i; // Declaro una bandera
// char auxi[30];
aux = new nodo; // Reservo Memoria para la variable Auxiliar
x=cola; // Inicializo el puntero x en el inicio de la cola
if(x==NULL) // si x = NULL la cola esta vacia
{
cout<<"COLA VACIA"<
else // Sino
{
x=cola; // Reasigno a x el inicio de la Cola por siakaso
while(x!=NULL) // Empieso a recorrer la cola
{
cout<<"1 ";
z=cola; // Pongo z al inicio de la cola
while(z!=NULL)
{
cout<<"2 ";
if(z==NULL || x==NULL) // COmparo si ya llegue al final de la cola
{ break; // SI es asi salgo del bucle
}
i=strcmp(x->info.nombre,z->info.nombre); // COmparo los valores
if(i<0) // si i < 0 kiere decir ke x esta antes ke z
{
cout<<"* ";
strcpy(aux->info.nombre,x->info.nombre); // Cambio
strcpy(x->info.nombre,z->info.nombre); // Cambio
strcpy(z->info.nombre,aux->info.nombre); // Cambio
}
z=z->sgte; // Me voy al siguiente nodo de z
}
x=x->sgte; // Me voy al siguiente nodo de x
}
}
aux=cola; // pongo aux al inicio de la cola
while(aux!=NULL) // Recorro
{
cout<<"
"<
}
// Libero Memoria
delete aux;
delete x;
delete z;
getch();
}
void main(){
int rpta;
for(;;)
{
rpta = menu();
switch (rpta)
{
case 1: registrar(); break;
case 2: reporte(); break;
case 3: cantidad(); break;
case 4: eliminar(); break;
case 5: buskar(); break;
case 6: buska_nom(); break;
case 7: ordenar(); break;
case 8: exit(0); break;
default: liberar(); exit(0); break;
}
}
}