Dev - C++ - Podrian ayudarme con un programa de atención al cliente de una sala de ventas

 
Vista:

Podrian ayudarme con un programa de atención al cliente de una sala de ventas

Publicado por Mauricio (6 intervenciones) el 21/10/2018 03:43:47
Esta es la indicacion:

Al área de atención al cliente de una sala de ventas llega un cliente, en promedio, cada n minutos. Solo hay una persona atendiendo y los clientes deben hacer cola y pasar a ser atendidos de acuerdo al orden de llegada. Los clientes necesitan ser atendidos por diversidad de problemas, algunos problemas requieren más tiempo de atención que otros. Elabore una simulación de la cola de clientes que esperan ser atendidos por medio de una lista lineal simplemente enlazada, en la que:
a) Cada nodo guarda información sobre el nombre del cliente y los minutos que requiere de atención su problema. La cantidad de minutos de atención de un cliente debe generarse, de manera aleatoria, con un valor entre 5 y 20. Otro dato útil que puede ser almacenado en cada nodo es el minuto en que comienza a ser atendido cada cliente, el cual se debe llenar en el instante en que el cliente comienza a ser atendido.
b) Cuando se alcanza la cantidad de minutos de atención del nodo del inicio de la cola, se imprime la información que contiene y se borra de la lista. De inmediato comenzará a ser atendido el cliente que viene a continuación en la cola.
c) Cuando transcurren n minutos después de que se ha incorporado un cliente a la cola, debe incorporarse otro cliente a la cola.
d) Luego de dos horas de atención (120 minutos), muestre el estado de la cola.
e) Los minutos deben ser simulados en su programa por cantidad de iteraciones, en un lazo cuyo límite superior es 120.

yo tengo este codigo que es parecido, como podria modificarlo para que sea lo que me pide las indicaciones? Se los agradeceria demasiado si me orientan

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
#include <iostream>
#include <string>
using namespace std;
 
struct venta{
	string cliente, marca, modelo;
	int precio;
	struct venta* siguiente;
};
struct vendedor{
	string nombre;
	struct venta* cabeza;
};
 
void InsertarNodoFinal(struct venta** unaCabeza, string unCliente, string unaMarca, string unModelo, int unPrecio)
{
	struct venta* nuevo_nodo = new struct venta[1];
	(*nuevo_nodo).cliente = unCliente;
	(*nuevo_nodo).marca = unaMarca;
	(*nuevo_nodo).modelo = unModelo;
	(*nuevo_nodo).precio = unPrecio;
	(*nuevo_nodo).siguiente = NULL;
 
	if (*unaCabeza == NULL)
		*unaCabeza = nuevo_nodo;
	else{
		struct venta* saltarin = *unaCabeza;
		while((*saltarin).siguiente != NULL)
			saltarin = (*saltarin).siguiente;
		(*saltarin).siguiente = nuevo_nodo;
	}
}
 
void VentasParticular(struct venta *unaCabeza, int unContador){
	if(unaCabeza != NULL){
		unContador++;
		cout << "Venta #" << unContador << ":" << endl;
		cout << "Nombre de cliente: " << (*unaCabeza).cliente << endl;
		cout << "Marca del vehiculo: " << (*unaCabeza).marca << endl;
		cout << "Modelo del vehiculo: " << (*unaCabeza).modelo << endl;
		cout << "Precio de venta: " << (*unaCabeza).precio << endl;
		VentasParticular((*unaCabeza).siguiente, unContador);
	}
	else
		cout << "\nCantidad total de ventas: " << unContador << endl;
}
 
int CantidadAutosVendidos(struct venta *unaCabeza){
	if(unaCabeza == NULL)
		return 0;
	else
		return 1 + CantidadAutosVendidos((*unaCabeza).siguiente);
}
 
int MontoTotalVentas(struct venta *unaCabeza){
	if(unaCabeza == NULL)
		return 0;
	else
		return (*unaCabeza).precio + MontoTotalVentas((*unaCabeza).siguiente);
}
 
int VentasTotales(struct vendedor* vendedores, int posicion, int limMaximo){
	if(posicion == limMaximo)
		return 0;
	else
		return MontoTotalVentas(vendedores[posicion].cabeza) + VentasTotales(vendedores, posicion+1, limMaximo);
}
 
float PromedioVentasTotales(struct vendedor* vendedores, int cantVendedores){
	return VentasTotales(vendedores, 0, cantVendedores) / cantVendedores;
}
 
int main(){
	//En una compañía que se dedica a la venta de automóviles hay cierta cantidad de vendedores, n.
	int n = 0, i = 0;
	cout << "Bienvenido, favor ingrese cantidad de vendedores: ";
	cin >> n;
 
	//Arreglo creado dinámicamente
	struct vendedor* vendedores = new struct vendedor[n];
 
	//a) Ingresar los vendedores a un arreglo de n casillas. Cada casilla del 
	//   arreglo debe contener el nombre del vendedor y un puntero a una lista.
	for(i = 0; i < n; i++){
		cout << "Nombre del vendedor #" << i+1 << ": ";
		cin >> vendedores[i].nombre;
		vendedores[i].cabeza = NULL;
	}
 
	//b) Ingresar las ventas realizadas por cada vendedor. Cada venta se incorpora a la lista
	//   que le corresponde a cada vendedor. Las listas deben contener el nombre del cliente,
	//   la marca del vehículo, el modelo del vehículo y el precio de venta.
	string nombreCliente = "", marcaV = "", modeloV = "";
	int precioV = 0, opcion = 0;
 
	for(i = 0; i < n; i++){
		do{
			cout << "\nVentas del vendedor #" << i+1 << ". 1)Ingresar 2)Continuar\nOpcion: ";
			cin >> opcion;
 
			if(opcion == 1){
				cout << "Nombre del cliente: ";
				cin >> nombreCliente;
				cout << "Marca del vehiculo: ";
				cin >> marcaV;
				cout << "Modelo del vehiculo: ";
				cin >> modeloV;
				cout << "Precio de venta: ";
				cin >> precioV;
 
				InsertarNodoFinal(&vendedores[i].cabeza, nombreCliente, marcaV, modeloV, precioV);
				//cout << (*(vendedores[i].cabeza)).precio << endl;
			}
		}while(opcion == 1);
	}
 
	//c) Mostrar el listado de las ventas realizadas por un vendedor particular, con sus detalles
	//   y total de ventas. Su función debe recibir el nombre del vendedor, buscarlo en el
	//   arreglo y desplegar las ventas que ha realizado y el total de las mismas.
	string nombreVendedor = "";
	opcion = 0;
	do{
		cout << "\nDesea conocer las ventas de algun vendedor? 1)Si 2)No\nOpcion: ";
		cin >> opcion;
 
		if(opcion == 1){
			cout << "Nombre del vendedor: ";
			cin >> nombreVendedor;
 
			for(i = 0; i < n; i++){
				if(vendedores[i].nombre.compare(nombreVendedor) == 0){
					VentasParticular(vendedores[i].cabeza, 0);
					//Salir del ciclo for
					i==n;
				}
			}
		}
	}while(opcion == 1);
 
	//d) Calcular la cantidad de autos vendidos por cada vendedor. Su función debe
	//   mostrar para cada uno de los vendedores, cuantos autos ha vendido.
	cout << "\nCantidad de autos vendidos por cada vendedor:" << endl;
	for(i = 0; i < n; i++){
		cout << "Vendedor #" << i+1;
		cout << "\tNombre: " << vendedores[i].nombre;
		cout << "\tCantidad: " << CantidadAutosVendidos(vendedores[i].cabeza) << endl;
	}
 
	//e) Calcular el monto total de las ventas de cada vendedor. Su función debe mostrar
	//   para cada uno de los vendedores, el monto total de las ventas que ha realizado.
	cout << "\nMonto total de las ventas de cada vendedor:" << endl;
	for(i = 0; i < n; i++){
		cout << "Vendedor #" << i+1;
		cout << "\tNombre: " << vendedores[i].nombre;
		cout << "\tMonto: " << MontoTotalVentas(vendedores[i].cabeza) << endl;
	}
 
	//f) Indicar el nombre del vendedor que realizó más ventas.
	//Primero suponemos que el primero es el mayor
	int mayor = CantidadAutosVendidos(vendedores[0].cabeza), indiceMayor = 0, pivote = 0;
	//Ahora, verificamos los demás (del 1 hasta el n-1)
	for(i = 1; i < n; i++){
		pivote = CantidadAutosVendidos(vendedores[i].cabeza);
		//Si pivote(i) es mayor que el que ya tenemos...
		if(pivote > mayor){
			//Se actualizan los valores...
			indiceMayor = i;
			mayor = pivote;
		}
	}
	//Al salir del ciclo for, los valores son los verdaderos
	cout << "\nVendedor que realizo mas ventas:\n";
	cout << "Nombre: " << vendedores[indiceMayor].nombre << " (#" << indiceMayor+1 << ")";
	cout << " Ventas: " << mayor << endl;
 
	//g) Realizar el cálculo de las ventas totales realizadas por la compañía.
	cout << "\nVentas totales de la compania: " << VentasTotales(vendedores, 0, n) << endl;
 
	//h) Realizar el cálculo del promedio de las ventas totales realizadas por la compañía.
	cout << "\nPromedio de las ventas totales: " << PromedioVentasTotales(vendedores, n) << endl;
 
	return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder