Implementación de una cola
Realice un programa implementando una estructura de cola dinámica, para simular las actividades que se realizan en la línea de cajas de un banco, atendiendo a sus clientes que acuden a realizar una de las siguientes operaciones:
1. Pago de servicio
2. Retiro o disposición
3. Cobro de cheque
4. Deposito
5. Pago de tarjeta
Los datos que el programa debe manejar de cada uno de los clientes son:
1. Turno: un número consecutivo asignado por el programa que garantiza que los clientes se atiendan exactamente en el orden que llegan.
2. Tipo de operación: un número que identifica uno de los 5 tipos de operaciones descritas antes.
3. Nombre: una cadena corta solo con el nombre del cliente (servirá para llamar por su nombre el cliente a la línea de cajas y ofrecer una atención personalizada).
4. Monto de la operación: la cantidad de dinero que implica la operación.
El programa deberá presentar un menú con las siguientes opciones, suponiendo claro que al inicio de operaciones la cola esta vacía:
1. Colocar un cliente en la cola: el programa pedirá los datos del cliente que se mencionaron antes, se le asignara un turno y se pondrá en la cola de atención.
2. Atender a un cliente: el programa tomará el cliente a la cabeza de la cola, mostrando todos sus datos y eliminándolo de la cola; se debe considerar en caso de que la cola este vacía enviar el mensaje correspondiente “no hay clientes por atender”.
3. Visualizar la cola: imprimir en columnas los 4 datos de cada cliente en el orden en que llegaron y serán atendidos desde el primero al último. En esta opción se debe considerar que si la cola esta vacía, se envíe el mensaje correspondiente.
4. Limpiar la cola: que consiste en eliminar todos los elementos de la cola.
5. Por su puesto la opción de salir o terminar el programa.
ESTE ES EL CODIGO QUE TENGO
Código:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#define TAM 10 //en precompilación substituye TAM por 10
char *lista[TAM];
int inserta(char *,int); //una funcion que inserta una cadena a la lista
void elimina(int); //una funcion que borra un elemento de la lista
void muestra(void); //una funcion que muestra la lista
void ordena(void);
void llama (void);
void menu (void);
main()
{
char a[50]; //Un buffer, memoria temporal para almacenar cadenas
int n;
for(n=0;n<TAM;n++)
lista[n]=NULL;
//verifiquemos que la lista esta vacia
for(n=0;n<TAM;n++) {
printf("\n Introduce el nombre del cliente %d",n+1);
gets(a);
inserta(a,n+1);
}
muestra();
llama();
getch();
}
//******************
int inserta(char *s,int p){
int t; //para el tamaño de memoria necesaria por la cadena
int l; //para la longitud de la cadena
char *str; //para apuntar a la memoria reservada
if (lista[p]==NULL){
l=strlen(s);
t=sizeof(char)*l;
str=(char *)malloc(t);
if(str==NULL){
printf("\ndisculpe pero!!! NO puede apartar lugar\n");
return 0;
}
strcpy(str,s);
lista[p]=str;
return 1;
}
else
return 0;
}
void elimina(int p){
free(lista[p]);
lista[p]=NULL;
}
//******************
void muestra(void){
int i; // para imprimir todos sus elementos
printf("\n Mira con cuidado!!!\n ESTE ES EL CONTENIDO DE LA LISTA...\n");
for (i=0;i<TAM;i++) //Recorriendo todo el arreglo
if(lista[i]==NULL) //si no hay cadena en esa posicion
printf(" %d.->\n",i+1); //imprimamos solo el numero
else //de lo contrario
printf(" %d.-> %s\n",i+1,lista[i]); //imprimamos la cadena
}
void llama(void){
int *n;
printf("cajero");
printf("llamar a cliente %s " );
menu();
}
void menu(void){
int opc;
printf("\n 1. Pago de servicio\n");
printf("2. Retiro o disposición\n");
printf("3. Cobro de cheque\n" );
printf("4. Deposito \n ");
printf("5. Pago de tarjeta \n ");
printf("6. salir");
printf("\n\t\ttu opcion fue:");
scanf("%d",&opc);
switch(opc)
{
case 1 :
printf("pago a realizar");
break;
case 2 :
printf("cuanto va a retirar");
break;
case 3 :
printf("de cuanto es su cheque");
break;
case 4 :
printf("cuanto es su deposito");
break;
case 5 :
printf("cuanto va a depositar en su tarjeta");
break;
case 6 :
default:
break;
}
}
pr favor ayudaaa esto es lo que tengo siento yo que voy bien pero no se como hacerle para hacer que el cajero yame a un cliente y los que vllan atras se recorran y los que se vllan nombrando agan su operacion y se borren ustedes que opinan esta muy mal lo que esoty haciedo