[ Foro de C++ ]

Necesito ayuda para hacer este código

06-Jun-2019 18:47
Invitado (Ximena )
0 Respuestas

este es el problema:
escriba un programa que simule una linea de caja del supermercado. la linea es una cola de espera . los clientes llegan en intervalos enteros al azar , de 1 a 4 minutos Obviamente, las velocidades necesitan equilibrarse.si la velocidad de llegada promedio es mayor que la velocidad promedio de servicio, la cola crecera de forma indefinida.inclusive tratandose de velocidades euilibradas, el azar todavia pude causar lineas largas.

Ejecute la simulacion del supermercado para un dia  de 2 horas(120 minutos) utilizando el sig. algoritmo.

1. escoja un numero al azar entre 1 y 4 para determinar el minuto en el cual llega el primer cliente .

2. en el momento de llegada del primer cliente :

a)determine el tiempo de srvicio para ese cliente(entero al azar entre 1 y 4)

b) empieze a darle servicio al cliente;
c)
programe el tiempo de llegada del siguiente cliente(entero ... ),añadido al tiempo actual

3. para cada minuto del dia:
 a. si llega el siguiente cliente:
   1. pongalo en la cola.
   2. programe el tiempo de llegada del siguiente cliente (entero...)añadido al tiempo actual

b. si termina  el tiempo de servicio del cliente:
  1.  digalo asi (imprima sale cliente+ numero de cliente )
  2. retirelo de la cola para darle servicio al sigguiente cliente.
  3. determine el tiempo de terminacion del servicio (entero ....)añadido al t.a

ejecute la simulacion durante 120 minutos y guarde los resultados en un archivo




Esto es lo que llevaba, no lo hice yo, no muestra el resultado como debería y no
funciona algunas veces o marca muchos errores
#include <iostream>
#include<stdlib.h>
#include <time.h>
using namespace std;

class Node{
public:
Node();
Node(int);
void SetData(int);
int GetData();
void SetNextPtr(Node*);
Node* GetNextPtr();

int data;
Node *nextPtr;
};

Node::Node(){
this->data=0;
this->nextPtr=0;
}

Node::Node(int valor){
this->data=valor;
this->nextPtr=0;
}

void Node::SetData(int n){
this->data = n;
}

int Node::GetData(){
return this->data;
}

void Node::SetNextPtr(Node* n){
this->nextPtr = n;
}

Node* Node::GetNextPtr(){
return this->nextPtr;
}

class cola{
public:
cola();
void InsertarAlFinal(int);
void EliminarAlInicio();
int ObtenerTiempo();

Node*firstPtr;
Node*lastPtr;
int NumeroDeNodos;
};

cola::cola(){
this->firstPtr=NULL;
this->lastPtr=firstPtr;
this->NumeroDeNodos=0;
}
void cola::InsertarAlFinal(int valor){
if(NumeroDeNodos>0){
lastPtr->SetNextPtr(new Node(valor));
lastPtr = lastPtr->GetNextPtr();
}
else{
firstPtr = new Node(valor);
lastPtr = firstPtr;
}
NumeroDeNodos++;
}

void cola::EliminarAlInicio(){
if(NumeroDeNodos>0){
Node*temp = firstPtr->GetNextPtr();
delete firstPtr;
firstPtr = temp;
NumeroDeNodos--;
}
}

int cola::ObtenerTiempo(){
return firstPtr->data;
}

int main(){
//setlocale(LC_ALL, "");
srand(time(NULL));
//(rand()%3)+1
cola cola1;
cola1.InsertarAlFinal((rand()%3)+1);
int TiempoDeAtencion = 0;
int TiempoDeLlegada = 0;
for(int i=0;i<=120;i++){
if(TiempoDeLlegada==0){
TiempoDeLlegada=(rand()%3)+1;
cola1.InsertarAlFinal((rand()%3)+1);
cout<<"llego un cliente "<<cola1.lastPtr->data<<endl;
}
else{
TiempoDeLlegada--;
}
if(cola1.NumeroDeNodos>0){
if(TiempoDeAtencion==0){
cola1.EliminarAlInicio();
cout<<"cliente atendido ";
TiempoDeAtencion=cola1.ObtenerTiempo();
cout<<cola1.ObtenerTiempo()<<endl;
}
else TiempoDeAtencion--;
}
}

system("pause");
return 0;
}
Ayuda:(




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)