Este es mi primer tema en este foro, bueno para ir al grano mi problema se trata de un while que se encuentra en la función mostrar de una lista, el problema con este es que no se cumplen las condiciones de su interior. Solo entra.
La idea de este programa es que muestre información de una caja dada un número de clientes, donde se muestra el tiempo y productos (Todos los datos son generados por el usuario). Dado estos datos se debe mostrar el mayor, menor de los productos y el promedio del tiempo, pero dado el problema con ese while (while(a != NULL)) no se muestra de forma correcta. Ya que muestra el mayor y menor como iguales y en el promedio muestra otro valor.
Adjunto mi código:
Código
/* Plataforma: Dev-C++ */ #include <iostream> #include <stdlib.h> using namespace std; struct nodo { int clientes; int tiempo; int productos; nodo *sig; }; class lista { private: nodo *aux; //Cabeza public: lista(); // Constructor ~lista(); //Destructor void ingreso(int i); void mostrarC(); void mostrar(int n); }; lista::lista() { aux=NULL; } lista::~lista() { nodo *q; while (aux) { q=aux; aux=aux->sig; delete q; } } void lista::ingreso(int i) { aux = new (nodo); aux->clientes=i; cout<<"Datos extras :"<<endl; cout<<"Tiempo: "<<endl; cin>>aux->tiempo; cout<<"Productos: "<<endl; cin>>aux->productos; system("cls"); } void lista::mostrarC() //Muestra cantidad de clientes { nodo *b; b=aux; while(b != NULL) { cout <<" "<<b->clientes << endl; b = b->sig; } } void lista::mostrar(int n) //Muestra datos extras: Tiempo y Productos { nodo *a; a=aux; int prom=0, menor, mayor; cout<<"Informacion Caja: "<<endl; cout<<endl; while (a != NULL) { if(mayor<(a->productos)) //Busca el mayor mayor=a->productos; if(menor>(a->productos)) //Busca el menor menor=a->productos; prom+=a->tiempo; //Suma los tiempos para el promedio a=a->sig; } cout<<"Mayor: "<<mayor<<" productos."<<endl; cout<<endl; cout<<"Menor: "<<menor<<" productos."<<endl; cout<<endl; cout<<"Promedio del tiempo (aprox): "<<prom/n<<" min."<<endl; //Muestra y calcula el promedio } int main () { lista C; int n; cout<<"Numero de Clientes?: "; //Pide cuantos clientes quieres en tu lista cin>>n; if(n==0) { cout<<"\n"<<"Lista Vacia"<<endl; } else { for(int i=1;i<=n;i++) { C.ingreso(i); } cout<<"Cantidad de Clientes: "; C.mostrarC(); cout<<endl; C.mostrar(n); } return 0; }
Espero que me puedan ayudar y de antemano gracias