Anda di halaman 1dari 6

Se considera una cola frente a una ventanilla en la cual si un cliente al

llegar a la
misma no puede ser atendido, se le reintegra a la cola a la posicin n 10,
si hay
ms de 10 personas, o al final de la misma, en caso contrario. Se pide disear
un
procedimiento de ATENCION (lo que debe suceder cuando un cliente es
atendido), REINGRESO (vuelta a la cola) y otro de INGRESO (inicial) en cola.
Todo ello con vistas a que el reingreso sea sencillo, para lo que se sugiere
controlar el n de personas en la cola, y en su caso, un puntero al elemento
adecuado de la cola para ejecutar el reingreso.

#include <iostream>
#include <conio.h>
#include <stdlib.h>

using namespace std;

struct nodo
{
int dni;
struct nodo *sgte;
}; //Las colas, al ser listas, trabajan con nodos. En este caso, trabajamos con el
DNI del Cliente.

struct cola

{
nodo *delante;
nodo *atras ;
}; //Estructura de la cola en s.

//MTODOS

//Agregar Cliente a la Cola de espera.


void registrar( struct cola &q, int valor )
{
struct nodo *aux = new(struct nodo);

aux->dni = valor;
aux->sgte = NULL;

if( q.delante == NULL)


q.delante = aux; //El cliente se posiciona enseguida del ltimo.
else
(q.atras)->sgte = aux;

q.atras = aux;

//Puntero que apunta el ltimo Cliente.

//Atender Cliente
int atender( struct cola &q )

{
int num ;
struct nodo *aux ;

aux = q.delante;
(est esperando all).

//Debemos sacar a este Cliente del inicio de la cola

num = aux->dni;
q.delante = (q.delante)->sgte;
delete(aux);

//Se libera una posicin.

return num;
}

//Muestra la Cola de Clientes


void muestraCola( struct cola q )
{
struct nodo *aux;

aux = q.delante;

while( aux != NULL )


{
cout<<"\n"<< aux->dni ;
aux = aux->sgte;
}
}

//Se recorre cada nodo y se muestra la informacin.

int main()
{
struct cola q;

q.delante = NULL;
q.atras = NULL;

int dato; //DNI del Cliente que se va a registrar.


int op;
int x ;

//Opcin del Men


//Valor auxiliar para recibir al Cliente atendido y mostrarlo.

do
{

cout<<"\n\t SISTEMA DE BANCO\n\n";


cout<<" 1. NUEVO CLIENTE
cout<<" 2. ATENDER CLIENTE
cout<<" 3. MUESTRA CLIENTES
cout<<" 4. SALIR
cout<<"\n INGRESE OPCION: ";
cin>> op;

switch(op)
{

"<<endl;
"<<endl;
"<<endl;
"<<endl;

case 1:

cout<< "\n INGRESE NUMERO DE DNI: "; cin>> dato;


registrar( q, dato );
cout<<"\n\n\t\t Cliente " << dato << " registrado...\n\n";
break;

case 2:

x = atender( q );
cout<<"\n\n\t\tNumero "<< x <<" atendido...\n\n";
break;

case 3:

cout << "\n\n MOSTRANDO COLA DE CLIENTES\n\n";


if(q.delante!=NULL) muestraCola( q );
else cout<<"\n\n\tCola vacia...!"<<endl;
break;

cout<<endl<<endl;
system("pause");

system("cls");

}while(op!=4);

return 0;
} //Fin del main

Anda mungkin juga menyukai