Es un cartero que recibe n cartas para m casas. Entonces comienzas ingresando n m luego dices para que casa iba cada carta por ej 0,0,2,3 (es el destinatario) finalmente esto se agrega a pilas donde se dice cuantas cartas tiene cada casa y si le sobraron cartas porque no eran de ninguna casa. El programa funciona, pero me dicen que cada casa tiene que tener un buzón que es una PILA y no se como hacer m pilas diferentes ¿Podrían ayudarme por favor?
Código [Seleccionar]
#include<iostream>
#include<string.h>
using namespace std;
struct pila {
int destino;
struct pila *sgt;
};
void push(struct pila **p, int destino){
struct pila *extra;
extra= new pila;
extra->destino=destino;
extra->sgt=*p;
*p=extra;
};
int pop(struct pila **p){
int auxiliar;
struct pila *extra;
extra=*p;
auxiliar=extra->destino;
*p=extra->sgt;
return auxiliar;
delete extra;
};
int main(){
struct pila *p, *mano, *buzon;
int cant_casas,cant_cartas,destino,cont,aux,tope;
cin>>cant_casas>>cant_cartas;
cout<<"Ingrese destinos de las cartas"<<endl;
for(int a=0;a<cant_cartas;a++){ /*llena la pila con los destinos correspondientes*/
cin>>destino;
push(&p,destino);
}
cout<<"El cartero ha comenzado a trabajar"<<endl;
for (int i=0;i<cant_casas;i++){ /*itera la cantidad de casas*/
cont=0;
cout<<"El cartero ha llegado a la casa "<<i<<endl;
cout<<"Revisando cartas"<<endl;
tope=cant_cartas;
for(int j=0; j<tope;j++){
aux=pop(&p); /* almacena el primera carta con su destino y la elimina de la pila p*/
if (aux==i){/*compara el destino de la carta con la casa actual*/
cont++;
cant_cartas--;
push(&p,destino);
cout<<"Carta para esta casa"<<endl;
/*se supone que cada buzon es una pila tambien, falta implementar eso*/
}
else{
push(&mano,aux); /*si la carta no es para el destino, entonces se guarda en la "mano" */
cout<<"Carta para otra casa"<<endl;
}
}
for (int k=0;k<cant_cartas;k++){/*itera sobre las cartas restantes en "mano" para devolverlas a la pila "p"*/
int aux4=pop(&mano);
push(&p,aux4);
}
cout<<"Se han encontrado "<<cont<<" cartas para esta casa"<<endl;
cout<<""<<endl;
}
cout<<"No quedan mas casas que visitar"<<endl;
cout<<"Han sobrado "<<cant_cartas<<" cartas en el bolso"<<endl;
while(1);
}