Foros del Web » Programación para mayores de 30 ;) » C/C++ »

buenas, necesito que me ayuuuuuudeen!!!

Estas en el tema de buenas, necesito que me ayuuuuuudeen!!! en el foro de C/C++ en Foros del Web. buenas buenas!!! tngo un problemiiita cn un programa de pilas... al momento de desapilar me dice qe esta vacio, asi haya apilado antes!! YA NO ...
  #1 (permalink)  
Antiguo 10/05/2012, 09:53
 
Fecha de Ingreso: mayo-2012
Mensajes: 1
Antigüedad: 12 años
Puntos: 0
buenas, necesito que me ayuuuuuudeen!!!

buenas buenas!!! tngo un problemiiita cn un programa de pilas... al momento de desapilar me dice qe esta vacio, asi haya apilado antes!! YA NO DOYYYY CN LO QE ME FALTA, O CN LO QE TNGO MALOOO!!! Please, les agradeceria una ayudiiita!!! :( aki esta el pseudooo..


#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <conio.h>

struct pila {

int sexo;
char cedula[8];
char nombre [20];
struct pila *sig;
} *cabezam=NULL, *cabezaf=NULL, *aux=NULL;

void apilar (void)
{
int otra;
apilando:

aux=(struct pila*)malloc(sizeof(struct pila));
printf ("\n introduzca los valores a apilar:\n\t");
printf ("\n introduzca su numero de cedula: \n");
gets(aux->cedula);
printf (" introduzca su nombre: \n");
gets(aux->nombre);
printf ("\n introduzca el sexo: (1) masculino o (2) femenino:\n\t");
gets(aux->sexo);

if (aux->sexo=="1"){
if(cabezam==NULL){
cabezam=aux;
aux->sig=NULL;

}else{
cabezam->sig = aux;
cabezam = aux;
}
}

if (aux->sexo=="2"){
if(cabezaf==NULL){
cabezaf=aux;
aux->sig=NULL;
}else{
cabezaf->sig=aux;
cabezaf=aux;
}}
printf("desea introducir datos de otra persona\n\n 1-SI\n\n 2-NO\n\n\t\t");
scanf("%d",&otra);
getchar();

switch(otra){

case 1:
system("cls");
goto apilando;

case 2:
break;
default:
printf("la opcion no es correcta");
getch();
}
}
void desapilar (void)
{
int sexo;
printf ("\n introduzca 1 si desea desapilar de la pila masculina o introduzca 2 si desea desapilar de la pila femenina :\n\t");
scanf ("%d",&sexo);
if (sexo==1){
if(cabezam==NULL){
printf("\n\n\t\tLA PILA ESTA VACIA\n\n\n");
getch();
}
while(aux->sig!=cabezam){
aux=aux->sig;
}
printf("\n\n\t\t\tdesapilados los datos de la pila masculina %c",cabezam->nombre);
free(cabezam);
cabezam=aux;
getch();
}

aux = cabezam;


if (sexo==2){
if(cabezaf==NULL){
printf("\n\n\t\tLA PILA ESTA VACIA\n\n\n");
getch ();}
}
}

void mostrar (void){
int sexo;
printf("\n introduzca la pila que desea mostrar (1)Masculina o (2)Femenina:\n\t");
gets(sexo);
if (sexo==1){
if (cabezam==NULL){
printf("\n\t la pila esta vacia\n\n puede apilar nuevos datos\n\n");
return;}
printf("\n\n\t mostrar los datos apilados\n\n");
aux=cabezam;
while(aux!=NULL){


printf("\t%c cedula",aux->cedula);
printf("\t%c nombre",aux->nombre);
aux=aux->sig;
printf("\n\n");

}

if (sexo==2){

if(cabezaf==NULL){
printf("\n\n\tla pila esta vacia\n\n puede apilar nuevos datos\n\n");
return;}
aux=cabezaf;
printf("\n\n\t mostrar los datos apilados\n\n");
while(aux!=NULL){
printf("\t%l cedula",aux->cedula);
printf("\t%c nombre",aux->nombre);
aux=aux->sig;
printf("\n\n");

}
}
}
}
void menup(){



int opc;
printf("\n\n\t elegir una opcion\n\n");
printf("\t\t\t1-APILAR\n\n \t\t\t2-DESAPILAR\n\n \t\t\t3-MOSTRAR\n\n \t\t\t4-SALIR\n\n\t\t\t\t\t");
scanf("%d",&opc);
getchar();
system("cls");
switch(opc){
case 1:
apilar();
system("cls");
menup();
break;
case 2:
desapilar();
system("cls");
menup();
break;
case 3:
mostrar();
system("pause");
system("cls");
menup();
break;
case 4:
break;
default:
printf("\n\n\t\topcion incorrecta intente de nuevo\n\n\n\a\a");
system("pause");
system("cls");
break;
}
}

void ir_a_la_pila(){
menup();
system("PAUSE");

}


void menu_principal(){
char resp;
printf("Republica Bolivariana de Venezuela \n");
printf("Ministerio del Poder Popular para la Defensa \n");
printf("Universidad Nacional Experimental Politecnica de la Fuerza Armada \n");
printf("UNEFA - Nueva Esparta \n\n\n\n\n\n\n\n");
printf(" Proyecto 2 \n\n\n\n\n\n\n\n");
printf("Autor: Gabriela Foglia \n");
printf("C.I.: 20.023.237 \n\n\n");
system("pause");

int pc;
system("cls");
printf("\n\t\t menu principal\n\n");
printf("\t elegir una opcion:\n\n \t1-MENU\n\n \t2-SALIR DEL PROGRAMA\n\n\n\t\t\t\t");
scanf("%d",&pc);
getchar();
switch(pc){
case 1:
system("cls");
ir_a_la_pila();
menu_principal();
break;

case 2:
break;

default:
printf("\n\n\t\testa opcion no es correcta intente de nuevo\n\n\n\a\a");
system("pause");
system("cls");
menu_principal();
}
}
void main (void){
menu_principal();
system("pause");
return 0;
}
  #2 (permalink)  
Antiguo 11/05/2012, 05:16
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: buenas, necesito que me ayuuuuuudeen!!!

Lo primero, deberías separar la lógica de la pila de la entrada de datos (me refiero a que no pidas datos dentro de la función de apilar, por ejemplo).

Mírate este ejemplo que explica como hacerlo de manera separada:

http://es.kioskea.net/faq/2885-las-pilas-en-lenguaje-c

Etiquetas: int, programa, struct
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:14.