You are on page 1of 3

/*Se tiene una lista doble con los datos de alumnos:

nombre
cel
fecha de nacimiento
edad
nota
se pide:
* Mostrar los alumnos con nota aprobatoria mayores a 11
* Mostrar los alumnos mayores de edad
* buscar un alumno y mostrarlo
* ordenar los elementos en orden alfabetico
*/
#include <iostream>
#include <conio>
#include <cstring>
struct nodo
{
char nombre[15];
int cel;
int DD,MM,AA;
int edad;
int nota;
struct nodo *sgt;
struct nodo *ant;
};
typedef struct nodo * Lista;
void agregar(Lista &);
void mostrar(Lista);
void mostrar_mayorA11(Lista);
void mostrar_mayorE18(Lista);
void ordenar(Lista &);
void main()
{
Lista ALUMNOS=NULL;
int opc;

do
{
clrscr();
cout<<"1. AGREGAR ALUMNO"<<endl;
cout<<"2. MOSTRAR ALUMNOS"<<endl;
cout<<"3. MOSTRAR ALUMNOS APROBADOS"<<endl;
cout<<"4. MOSTRAR ALUMNOS MAYORES DE EDAD"<<endl;
cout<<"5. ORDENAR LISTA ALFABETICAMENTE"<<endl;
cout<<" 0. SALIR"<<endl;
cout<<"Ingrese opcion: ";
cin>>opc;
switch(opc)
{
case 1: agregar(ALUMNOS);
cout<<"Alumno agregado";
break;
case 2: if(ALUMNOS!=NULL)mostrar(ALUMNOS);
else cout<<"Lista vacia";
getch();
break;
case 3: if(ALUMNOS!=NULL)
{
cout<<"ALUMNOS APROBADOS"<<endl;
mostrar_mayorA11(ALUMNOS);
}
else cout<<"Lista vacia";
getch();
break;
case 4: if(ALUMNOS!=NULL)
{
cout<<"ALUMNOS MAYORES DE EDAD"<<endl;
mostrar_mayorE18(ALUMNOS);
}
else cout<<"Lista vacia";
getch();
break;
case 5: if(ALUMNOS!=NULL)
{
cout<<"LISTA ORDENADA"<<endl;
ordenar(ALUMNOS);
mostrar(ALUMNOS);
}
else cout<<"Lista vacia";
getch();
break;
}
}while(opc!=0);
}
void agregar(Lista &p)
{
Lista q=new(struct nodo);
cout<<"Ingrese nombre: ";cin>>q->nombre;
cout<<"Ingrese celular: ";cin>>q->cel;
cout<<"Ingrese fecha de nacimiento: "<<endl;
cout<<" DD: ";cin>>q->DD;
cout<<" MM: ";cin>>q->MM;
cout<<" AA: ";cin>>q->AA;
cout<<"Ingrese edad: ";cin>>q->edad;
cout<<"Ingrese nota: ";cin>>q->nota;
q->ant=NULL;
q->sgt=NULL;
if(p==NULL)
{
p=q;
}
else
{
q->sgt=p;
p->ant=q;
p=q;
}
}
void mostrar(Lista q)
{
cout<<"Nombre\tCel\t\tNAC.\t\tedad\tnota"<<endl;
while(q!=NULL)
{
cout<<q->nombre<<"\t"<<q->cel<<"\t"<<q->DD<<"/"<<q->MM<<"/"<<q->AA<<"\t"<<q-
>edad<<"\t"<<q->nota<<endl;
q=q->sgt;
}
}
void mostrar_mayorA11(Lista q)
{
cout<<"Nombre\tCel\t\tNAC.\t\tedad\tnota"<<endl;
while(q!=NULL)
{
if(q->nota>=11)cout<<q->nombre<<"\t"<<q->cel<<"\t"<<q->DD<<"/"<<q->MM<<"/"<<q-
>AA<<"\t"<<q->edad<<"\t"<<q->nota<<endl;
q=q->sgt;
}
}
void mostrar_mayorE18(Lista q)
{
cout<<"Nombre\tCel\t\tNAC.\t\tedad\tnota"<<endl;
while(q!=NULL)
{
if(q->edad>=18)cout<<q->nombre<<"\t"<<q->cel<<"\t"<<q->DD<<"/"<<q->MM<<"/"<<q-
>AA<<"\t"<<q->edad<<"\t"<<q->nota<<endl;
q=q->sgt;
}
}
void ordenar(Lista &X)
{
Lista p=X,q=X;
int aux;
char a[15];
while(p!=NULL)
{
q=p;
while(q!=NULL)
{
if(strcmp(p->nombre,q->nombre)>0)
{
strcpy(a,p->nombre);
strcpy(p->nombre,q->nombre);
strcpy(q->nombre,a);
aux=p->cel;
p->cel=q->cel;
q->cel=aux;
aux=p->DD;
p->DD=q->DD;
q->DD=aux;
aux=p->MM;
p->MM=q->MM;
q->MM=aux;
aux=p->AA;
p->AA=q->AA;
q->AA=aux;
aux=p->edad;
p->edad=q->edad;
q->edad=aux;
aux=p->nota;
p->nota=q->nota;
q->nota=aux;
}
q=q->sgt;
}
p=p->sgt;
}
}

You might also like