[C con Clase] examinar este codigo para

luis alfonso jimenez mejia viejolajimenez en gmail.com
Lun Oct 18 04:20:53 CEST 2010


me gustaria  que  le echaran un vistazo  a este codigo
es que no lo tengo totalmente  optimizado  pricipalmente la funcion mostrar
solo me muestra wel primer  elemento de la lista
por favor  sugerencias
#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<dos.h>
#include<string.h>


struct pila
{
char nombre[40];
int ced;
int edad;
int tel;
char sex[10];
char eps[50];
char mail[50];
struct pila *sig;
}*cima=NULL,*p=NULL;
void menu();
void portada();
void insertar();
void extraer();
void visualizar ();
void main()
{
portada();
clrscr();
textcolor(8);

menu();

}
void portada()

{
system("color 13");
gotoxy(10,2);cout<<"ESTRUCTURA DE DATOS"<<endl;
gotoxy(10,6);cout<<"TRABAJO COLABORATIVO NO 2"<<endl;
gotoxy(10,9);cout<<"PROFESOR HERMES MOSQUERA"<<endl;
gotoxy(10,14);cout<<"Powered By YAIR JOSE DIAZ GONZALEZ"<<endl;
gotoxy(10,15);cout<<"UNIVERSIDAD NACIONAL ABIERTA Y A
DISTANCIA(UNAD)"<<endl;
gotoxy(10,19);system("pause");
}
void insertar() // Funcion que inserta datos a la pila
{
char n;
struct pila *p;
p = (struct pila*) malloc(sizeof(struct pila)); // reservamos
// espacio para el nodo (dato, sig)
clrscr();

if(cima==NULL)
{

do
  {
p->sig = NULL; // hacemos que el nuevo nodo apunte a NULL
cima = p; // Ahora el tope es el nuevo nodo
clrscr();
gotoxy(5,5);printf("Escriba el nombre: ");
gotoxy(5,6) ;scanf("%s",p->nombre);
gotoxy(5,7);printf("Dame Edad: ");
gotoxy(5,8);scanf("%d",&p->edad);
gotoxy(5,9);printf("Dame su telefono: ");
gotoxy(5,10);scanf("%d",&p->tel);
gotoxy(5,11);printf("Dame el No de  Cedula: ");
gotoxy(5,12);scanf("%d",&p->ced);
gotoxy(5,13);printf("Dame el sexo: ");
gotoxy(5,14);scanf("%s",&p->sex);
gotoxy(5,15);printf("Afiliacion a EPS o ARS: ");
gotoxy(5,16);scanf("%s",&p->eps);
gotoxy(5,17);printf("Deme su Email: ");
gotoxy(5,18);scanf("%s",&p->mail);

gotoxy(5,21);cout<<"Para introducir otro paciente intro S/N"<<endl;
gotoxy(5,22);cin>>n;

}
while((n=='s')||(n=='S'));
 menu();

return;
}

else// si no
{


p->sig = cima; // hacemos que el nuevo nodo apunte al tope
cima = p; // ahora el tope es el nuevo nodo
}



}
void extraer()
{
if(cima == NULL)
{

printf("PILA VACIA\n");
return;
}
struct pila *tmp; // temporal para almacenar la direccion del tope
tmp = cima; // guardamos en tmp la ubicacion del tope
cima = tmp->sig; // hacemos que el tope sea el anterior nodo ingresado
// sacamos el dato del nodo que estaba como tope
printf("Nombre : %s\n", tmp->nombre);
printf("Edad : %d\n", tmp->ced);
printf("Edad : %d\n", tmp->edad);
printf("Edad : %d\n", tmp->tel);
printf("Nombre : %s\n", tmp->sex);
printf("Nombre : %s\n", tmp->eps);
printf("Nombre : %s\n", tmp->mail);
free(tmp); // liberamos la memoria reservada para el tope
}
void visualizar (void)// funcion de la pila que le permite visualizar datos
{
char n;
p = (struct pila*) malloc(sizeof(struct pila));
if (cima==NULL)//si c esta vacio
{
do
{
clrscr();
cout<<"NO HAY ELEMENTOS A LISTAR";//entoces mostrar esto
gotoxy(5,19);cout<<"Desea regresar al menu principal S/N"<<endl;
gotoxy(5,20);cin>>n;
}
while((n=='n')||(n=='N'));
menu();
}

else// si no
{
clrscr();//limpiar pantalla
do
{
p=cima;//asignas inicio a p
while (p!=NULL)//mientras la p no este vacia
{
clrscr();
printf("Nombre : %s\n", p->nombre);
printf("Edad : %d\n", p->ced);
printf("Edad : %d\n", p->edad);
printf("Edad : %d\n", p->tel);
printf("Nombre : %s\n", p->sex);
printf("Nombre : %s\n",p->eps);
printf("Nombre : %s\n", p->mail);


p=p->sig;
free(cima);
gotoxy(5,19);cout<<"Desea regresar al menu principal S/N"<<endl;
gotoxy(5,20);cin>>n;
}
}
while((n=='n')||(n=='N'));
menu();
}

getch();
}
void menu()
{
int opc=0;
do
{
clrscr();
gotoxy(12,3);cout<<"ASIGNADOR DE CITAS ";
gotoxy(15,7);cout<<"\n\n\n";
gotoxy(15,8);cout<<"1. Insertar\n";
gotoxy(15,9);cout<<"2. Extraer\n";
gotoxy(15,10);cout<<"3. Visualizar\n";
gotoxy(15,11);cout<<"4. Salir\n\n";
gotoxy(15,13);cout<<"Digite la opcion: ";
cin >>opc;
switch (opc)
{
case 1:
insertar();
break;
case 2:
extraer();
break;
case 3:
visualizar();
break;
case 4:
exit(1);
}
getch();
}while (opc!=4);
}
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20101017/70e4433d/attachment.html>


Más información sobre la lista de distribución Cconclase