Simulation of DMV queue Use the dynamic queue class to simulate customers arriving at the DMV and being serviced.
Customers arrive at random intervals. Each will be given a ticket with their name, a number and a time stamp. The customer will enter the queue to wait to be served. When a customer is served, they are taken out of the queue.
The DMV service agent will process this person for a certain amount of time and then go on to the next person.
In order to simulate the time of arrival of customers and the time of processing, you will need to use the localtime function, a wait function, and a random number generator. The random number should be between 1 and 5. Add customers to the queue by using a random number generator to choose a random number between 1 and 5.
Use this number as a parameter to the wait function. When the wait function ends, add them to the queue. When there are customers waiting, the DMV service agent function should dequeue a customer, generate a random number between 1 and 10 and use this number as a parameter to the wait function simulating the processing time for that person.
The process function will then need to find the time the person waited by calling the time function and finding the difference between the start and end timestamps. Save this time to an accumulator so that in the end you can find the average wait time for all customers.
Add 10 people to the line and process them. Each time you process someone, print out their ticket information. After all 10 have been serviced, print the average wait time. Below is an example of the time calls you will need and a wait function.
#include
#include
using namespace std;
void wait ( int seconds );
int main()
{
wait(5);
time_t rawtime;
struct tm * timeinfo;
time ( &rawtime );
timeinfo = localtime ( &rawtime );
cout << timeinfo->tm_hour<< ":" << timeinfo->tm_sec;
wait(5);
time ( &rawtime );
timeinfo = localtime ( &rawtime );
cout << timeinfo->tm_hour<< ":" << timeinfo->tm_sec;
return 0;
}
void wait ( int seconds )
{
clock_t endwait;
endwait = clock () + seconds * CLOCKS_PER_SEC ;
while (clock() < endwait) {}
}