Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

C++ programming Sample input: 4 8 3 M 40 50 40 45 50 45 60 65 4 20 5 30 3 35 6 40 8

C++ programmingimage text in transcribed

image text in transcribed

Sample input:

4 8 3 M 40 50 40 45 50 45 60 65 4 20 5 30 3 35 6 40 8 60 7 70 5 85 9 90 4 110 2 120 4 130 1 135 2 150 6 180 END

Sample output:

LOG 0 start 20 entered line 1 length 1 20 entered line 2 length 1 20 entered line 3 length 1 20 entered line 4 length 1 20 exited line 1 length 0 wait time 0 20 entered register 1 20 exited line 2 length 0 wait time 0 20 entered register 2 20 exited line 3 length 0 wait time 0 20 entered register 3 20 exited line 4 length 0 wait time 0 20 entered register 4 30 entered line 1 length 1 30 entered line 2 length 1 30 entered line 3 length 1 30 entered line 4 length 1 30 entered line 5 length 1 30 exited line 5 length 0 wait time 0 30 entered register 5 35 entered line 5 length 1 35 entered line 6 length 1 35 entered line 7 length 1 35 exited line 6 length 0 wait time 0 35 entered register 6 35 exited line 7 length 0 wait time 0 35 entered register 7 40 entered line 6 length 1 40 entered line 7 length 1 40 entered line 8 length 1 40 entered line 1 length 2 40 entered line 2 length 2 40 entered line 3 length 2 40 exited line 8 length 0 wait time 0 40 entered register 8 60 entered line 8 length 1 60 entered line 4 length 2 60 entered line 5 length 2 60 entered line 6 length 2 60 entered line 7 length 2 60 entered line 8 length 2 60 entered line 1 length 3 60 entered line 2 length 3 60 exited register 1 60 exited line 1 length 2 wait time 30 60 entered register 1 60 exited register 3 60 exited line 3 length 1 wait time 30 60 entered register 3 65 exited register 4 65 exited line 4 length 1 wait time 35 65 entered register 4 70 entered line 3 length 2 70 entered line 4 length 2 70 entered line 1 length 3 70 entered line 3 length 3 70 entered line 4 length 3 70 entered line 5 length 3 70 entered line 6 length 3 70 exited register 2 70 exited line 2 length 2 wait time 40 70 entered register 2 80 exited register 5 80 exited line 5 length 2 wait time 45 80 entered register 5 80 exited register 6 80 exited line 6 length 2 wait time 40 80 entered register 6 85 entered line 2 length 3 85 entered line 5 length 3 85 entered line 6 length 3 85 entered line 7 length 3 85 entered line 8 length 3 90 lost 90 lost 90 lost 90 lost 90 lost 90 lost 90 lost 90 lost 90 lost 95 exited register 7 95 exited line 7 length 2 wait time 55 95 entered register 7 100 exited register 1 100 exited line 1 length 2 wait time 60 100 entered register 1 100 exited register 3 100 exited line 3 length 2 wait time 60 100 entered register 3 105 exited register 8 105 exited line 8 length 2 wait time 45 105 entered register 8 110 entered line 1 length 3 110 entered line 3 length 3 110 entered line 7 length 3 110 entered line 8 length 3 110 exited register 4 110 exited line 4 length 2 wait time 50 110 entered register 4 120 entered line 4 length 3 120 lost 120 exited register 2 120 exited line 2 length 2 wait time 80 120 entered register 2 125 exited register 6 125 exited line 6 length 2 wait time 65 125 entered register 6 130 entered line 2 length 3 130 entered line 6 length 3 130 lost 130 lost 130 exited register 5 130 exited line 5 length 2 wait time 70 130 entered register 5 135 entered line 5 length 3 140 exited register 1 140 exited line 1 length 2 wait time 80 140 entered register 1 140 exited register 3 140 exited line 3 length 2 wait time 70 140 entered register 3 150 entered line 1 length 3 150 entered line 3 length 3 155 exited register 4 155 exited line 4 length 2 wait time 85 155 entered register 4 155 exited register 7 155 exited line 7 length 2 wait time 95 155 entered register 7 170 exited register 2 170 exited line 2 length 2 wait time 110 170 entered register 2 170 exited register 6 170 exited line 6 length 2 wait time 100 170 entered register 6 170 exited register 8 170 exited line 8 length 2 wait time 110 170 entered register 8 180 entered line 2 length 3 180 entered line 4 length 3 180 entered line 6 length 3 180 entered line 7 length 3 180 entered line 8 length 3 180 lost 180 exited register 1 180 exited line 1 length 2 wait time 110 180 entered register 1 180 exited register 3 180 exited line 3 length 2 wait time 110 180 entered register 3 180 exited register 5 180 exited line 5 length 2 wait time 110 180 entered register 5 200 exited register 4 200 exited line 4 length 2 wait time 130 200 entered register 4 215 exited register 6 215 exited line 6 length 2 wait time 130 215 entered register 6 215 exited register 7 215 exited line 7 length 2 wait time 130 215 entered register 7 220 exited register 1 220 exited line 1 length 1 wait time 110 220 entered register 1 220 exited register 2 220 exited line 2 length 2 wait time 135 220 entered register 2 220 exited register 3 220 exited line 3 length 1 wait time 110 220 entered register 3 230 exited register 5 230 exited line 5 length 1 wait time 145 230 entered register 5 235 exited register 8 235 exited line 8 length 2 wait time 150 235 entered register 8 240 end

STATS Entered Line : 53 Exited Line : 40 Exited Register : 32 Avg Wait Time : 68.12 Left In Line : 13 Left In Register: 8 Lost : 13

What are we simulating? In our hypothetical big-box retail store, customers shop and choose the merchandise they want to buy. Each customer then proceeds to get into a line to wait to be checked out. When there is an available cashier, the customer goes to the register where that cashier is waiting. When the cashier is finished checking the customer out, the customer exits the register and is considered finished. What we're interested in doing is tracking these movements: when customers enter lines, exit lines and enter registers, and finally exit registers. We'll then report various statistics at the conclusion of the simulation, to summarize the overall outcome. Arrangements of lines and registers There are two different arrangements of lines and registers that our simulation will support. 1. One or more registers, each with its own separate line. A customer in a particular line will only ever proceed to the corresponding register. 2. One or more registers, with one shared line feeding customers to all of them. The Input First of all, you may freely assume that the input given to your simulation will match the description below. It may obviously be different than what's shown here, but it will always follow all of the rules here. Your program is free to do anything you'd like- up to and including crashing - in the case that the input is invalid. The simulator's input begins with what we'll call the setup section, which specifies the parameters that control how the simulation will run. The setup section looks like this - the italiczed portions are included here for descriptive purposes, but are not included in the actual input. 4 3 3 M 48 58 38 the length of the simulation, in minutes the number of registers the maximum Line Length, beyond which customers be Lost s for a single Line, M for multiple Lines (one for each register) register #1 takes 49 seconds to process a customer register #2 takes 59 seconds to process a customer register #3 takes 38 seconds to process a customer There are a few notes to be aware of: . When we talk about the length of the simulation, we don't actually intend for the simulation to take that long to run. The goal is for the simulation to give a quick answer to the question of "What would a day in my store look like if we arranged things like this?" We'll say that each register has a register number and that they are numbered consecutively starting from 1. Similarly, lines will have a line number and they're also numbered consecutively starting from 1. The simulation length is given in minutes, while the processing times for each register are given in seconds. After reading the setup section of the input, your simulator will have what it needs to set things up and get started. From there, the rest of the input specifies customer arrivals. Each line in the customer arrival section of the input consists of two numbers: a positive number of customers and the time that these customers arrival. (Time in our simulation is always measured in terms of the number of seconds since the simulation started. You can assume that the time associated with each line describing an arriving of customers will be greater than the time associated with the previous one. The input will always end with a line consisting of the word END. That doesn't mean that the simulation should end immediately; it just means that there are no more customer arrivals The movement of customers through the simulation So that we can all agree on the proper output of the simulation, we'll need to agree on the precise details of how customers move through the simulation. In the interest of keeping things simple, we'll take some liberties with reality - customers won't always do the smartest thing, we'll ignore how long it takes for customers to physically move around, and so on. Also, all actions are considered to have happened at discrete times measured in an integer number of seconds since the start of the simulation; something might happen at time 10 or time 11, but never at time 10.5. In any given second simulation time, customer arrivals are always considered before customers are moved into and out of registers. When n customers arrive at a particular time, we assume that they're separate they each have a shopping basket and are interested in engaging in a separate transaction. Each of them has a decision to make and they make them one right after the other: - The customer chooses the shortest line and enters it. Note that this is based only on how many customers are in each line; the presence or absence of a customer at any registers is not considered. When there is a tie (i.e., two lines are equally the shortest), the customer will always choose the line with the smallest line number (e.g., if lines 3 and 7 are equally the shortest, the customer will enter line 3). If all of the lines are the maximum length specified in the setup section, the customer is not willing to wait, and instead leaves the simulation immediately. That customer is considered to be lost. (This is a crude representation of a store being busy enough that it drives away customers.) . Whenever a register is unoccupied, a customer immediately moves from the corresponding line and into the register. That customer will stay for the appropriate number of seconds (as determined by the processing time for that register, specified in the setup section). At that time, the customer will leave the register and will immediately be replaced by another. For the sake of simplicity, we'll assume that customers will never move from one line to another once they've entered a line, nor will a customer ever enter a register from any line other than the one that corresponds to it The output The output of your simulator consists of two sections: The log which indicates each time an interesting event occurs. The log begins with the word LOG alone on a line, followed by one line of output for each event. Each line of output describing an event consists of an integer simulation time (the number of seconds since the simulation started), a space, and then a description of the event. The following kinds of events are required to be logged: The simulation started The simulation ended A customer entered a line, in which case we want to know which line number and how long the line is now (including the new customer) A customer exited a line, in which case we want to know which line number and how many seconds the customer waited in that line A customer entered a register, in which case we want to know which register number A customer exited a register, in which case we want to know which register number there's no need to see how long they waited, as this is always the same for a given register A customer has been lost (i.e., they left without waiting in line because all lines were maximum length) The "stats" section. This section begins with a blank line (to separate it from the log visually), followed by the word STATS alone on a line, followed by these statistics: - How many customers entered a line during the simulation - How many customers exited a line during the simulation How many customers exited a register during the simulation - we don't show many customers entered a register, because every customer who exits a line immediately enters a register The average wait time, in simulation seconds, for customers who exited a line. We only care about how long they waited in line, and we only measure this for customers who exited a line; customers still remaining in line at the end of the simulation are not included. Display this value to two digits after the decimal point. How many customers are still left in line at the end of the simulation (1.e., they've entered a line but not exited it yet) How many customers are still left at a register at the end of the simulation (i.e., they've entered a register but not exited it yet) - How many customers were lost during the simulation

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Seven Databases In Seven Weeks A Guide To Modern Databases And The NoSQL Movement

Authors: Luc Perkins, Eric Redmond, Jim Wilson

2nd Edition

1680502530, 978-1680502534

More Books

Students also viewed these Databases questions

Question

8. Do the organizations fringe benefits reflect diversity?

Answered: 1 week ago