Foro: Dudas y Consultas

punto_2c_de_nuevo

punto_2c_de_nuevo

de Usuario eliminado -
Número de respuestas: 1

Ejercicio 2_c
Profe no encuentro el error :( el quitar no entien xq esta mal, osea compila pero no encuentro el error, me tira datos basura :(

const int MAX=3;

typedef int contenedor[MAX];
typedef struct tpila{
contenedor d1;
contenedor d2;
};

void iniciar_pila(tpila &p);
void agregar_pila(tpila &p,int nuevo);
bool pila_llena(tpila p);
int quitar_pila(tpila &p);
bool pila_vacia(tpila p);
int tope_pila(tpila p);

void iniciar_pila(tpila &p){
p.d2[MAX-1]=-1;
}
//valido
void agregar_pila(tpila &p,int nuevo){
if(pila_llena(p)==true)
cout<<" PILA LLENA "<<endl;
else{
p.d2[MAX-1]++;
if(p.d2[MAX-1]<MAX)
p.d1[p.d2[MAX-1]];
else
p.d2[p.d2[MAX-1]-MAX];
}
}

//pila llena es correcto
bool pila_llena(tpila p){
return p.d2[MAX-1]==MAX*2-2;
}
//pila llena es correcto
bool pila_vacia(tpila p){
return p.d2[MAX-1]==-1;
}

//no estás accediendo nunca al primer contenedor
int quitar_pila(tpila &p){
int aux;
if(pila_vacia(p)==true)
aux=-9999;
else{
if(p.d2[MAX-1]>=MAX)
aux=p.d2[p.d2[MAX-1]-MAX];
else
aux=p.d2[p.d2[MAX-1]]; //debería ser aux=p.d1[p.d2[MAX-1]]
p.d2[MAX-1]--;
}
return aux;
}

int tope_pila(tpila p){
int aux;
if(pila_vacia(p)==true)
aux=-9999;
else
if(p.d2[MAX-1]>=MAX)
aux=p.d2[p.d2[MAX-1]-MAX];
else
aux=p.d2[p.d2[MAX-1]]; //debería ser aux=p.d1[p.d2[MAX-1]]
return aux;
}

(Editado por Verónica Torres - envío original jueves, 21 de septiembre de 2023, 14:51)