+ 2
Service Station - Programming Project
Can anyone help me with a programming project? The program needs to be able to accept an INT input. There also needs to be 3 bays where virtual cars will sit. Every cycle the counter increments by 1. In the first Bay one car sits for 2 cycles, second Bay is 3 cycles, and third Bay is 4 cycles. They then move to a Completed section and there is also a counter that keeps track of how many cars are completed. There will be a Holding Count and Cycle Count section as well. Any help is much appreciated!
21 Réponses
+ 1
Finished the program. Worked on it for a while. Sending it in two messages because it's too long:
#include <iostream>
using namespace std;
int carsFinished = 0;
class Bay{
public:
//Constructor and StartUp Call
Bay(int n): cycles(n), totalCycles(n){
hasCar = false;
}
//When cycle passes
int cycle(int holdC){
switch(hasCar){
case false:
if(holdC != 0){
cycles -= 1;
hasCar = true;
cout << "Car entered into bay." << endl << endl;
return 1;
} else {
cout << "No more cars to serve. " << endl;
return 0;
}
case true:
if(cycles > 0){
cycles -= 1;
cout << "Service in progress..." << endl << endl;
return 0;
} else {
cycles = totalCycles;
cout << "Car finished." << endl << endl;
carsFinished += 1;
hasCar = false;
return 0;
}
}
}
+ 1
What do you mean by completed section? Where will the cars start off? Explain more. I understand the bays, but not where the cars will start or how they will move. What will we do with the INT input? You're very vague.
+ 1
It’ be easier if I could post an image of the layout.
The program should first ask for an input (Int)
Then the Output should contain the following:
Holding Count (cars remaining to be serviced)
Cycle Count (counts each cycle and increments by 1)
Bay A (1 car completes every 2 cycles)
Bay B (1 car completed every 3 cycles)
Bay C (1 car completed every 4 cycles)
Completed Count (number of cars completed)
I hope this helps clear it up a little bit more. Like I said the diagram would make a lot more sense. Hard to explain with just text.
+ 1
The cars would go in order in regards to the Bays.
For example, the first car would go to Bay A; the counter would increment by 1; a new car would move into Bay B; increment by 1 again; car in Bay A moved to completed, so there would be a new car in Bay A & Bay C during this cycle. And it would just continue like this.
+ 1
Just kinda how the code is supposed to look I guess. Just not sure where to start
+ 1
Basically if you put a 20 for the input it needs to show the correct output for all the following I outputs I mentioned above.
+ 1
The project isn’t very clear on this but I’m assuming it’s meaning how many cars there are.
+ 1
Awesome, man! I’ll have to check it out in a bit. I really appreciate the help. It should at least get me started.
+ 1
Well it's everything you asked for. Just copy the first part into a c++ compiler, then copy the second part right under the first, and run it. It'll work perfectly.
+ 1
Ohhh ok man then I'll fix it after school today
0
Ohhh ok I think I understand now. Still need help? If so, with what?
0
So what will we do with the input integer? Is it the amount of cars that need to be serviced?
0
What do we DO with the input though. Yes, we get a 20 and output stuff, but what does that 20 represent? I can start helping as soon as I know this.
0
private:
const int totalCycles;
int cycles;
bool hasCar;
};
int getTotalCars(){
int n;
while(true){
cout << "Enter amount of cars to serve: " << flush;
cin >> n;
if(n <= 0){
cout << "Invalid amount." << endl;
} else {
cout << endl;
break;
}
}
return n;
}
int main(){
int holdingCount = getTotalCars(); //Total cars left to serve
int const totalHoldCount = holdingCount;
int cycleCount = 0; //Cycles that have passed by
int sub = 0;
int A = 2;
int B = 3;
int C = 4;
Bay bayA(A);
Bay bayB(B);
Bay bayC(C);
while(carsFinished < totalHoldCount){
cout << "Bay A: " << endl;
sub += bayA.cycle(holdingCount);
if(holdingCount > 0){
holdingCount -= sub;
}
sub = 0;
cout << "Bay B: " << endl;
sub += bayB.cycle(holdingCount);
if(holdingCount > 0){
holdingCount -= sub;
}
sub = 0;
cout << "Bay C: " << endl;
sub += bayC.cycle(holdingCount);
if(holdingCount > 0){
holdingCount -= sub;
}
sub = 0;
cout << endl << "Cars left to serve: " << holdingCount << endl;
cout << "Cars finished: " << carsFinished << endl;
if(carsFinished != totalHoldCount){
cycleCount += 1;
cout << "Cycles: " << cycleCount << endl << endl;
}
}
cout << "All cars done." << endl;
cout << "Total Cycles: " << cycleCount << endl;
return 0;
}
0
What would it look like if instead of entering the total amount of cars, the user entered the total amount of cycles to take place? Would it completely change the program?
0
Hmm... What if we had days instead. Each bay can do a certain number of cycles per hour. If in one day, each bay is open for 10 hours, then the input would be how many days we want the program to run. Then, maybe we could also insert money. Each one gets money for the completion of a car. At the end of the day, it displays house much money each bay made. If a car wasn't finished by the end of he day, then it would be continued on the next day. By the way, what is this project for?
0
A Computer Organization & Architecture class. It shouldn’t require programming for this class, but for some reason we have to do this project...
0
And I believe it’s supposed to be just how the program you wrote is but with cycles as the input instead of days
0
I finally got some guidelines for the Project:
There will be a Waiting Count which is the number of cars waiting to be serviced; this will be set to 1 at the very beginning.
Next, there will be 3 Bays (A, B, C). This is where the cars will be serviced. A = 2 cycle counts; B = 3; C = 4.
Lastly, there will be a Finished Bay; this is where the number of cars finished will be stored. This will also be output.
0
1 cycle count = 1 car added to the Waiting Bay (count).
For example, after the first cycle count, there will be 1 car in Bay A. Bay B & C will both be empty and there will be no cars completed yet.
Cycle count 2 – there will be 1 car in Bay A & B. None in C or the finished.
Cycle count 3 – A will move to Finished, and there will be 1 car in B & C.
Therefore, the Waiting Count will increase overtime as the Bays won’t be able to clear fast enough.
Also, the only thing the user INPUTS is the cycle count.
The only thing that gets OUTPUT is “Finished Count” & “Numbers of Cars Still Waiting”.
Think of it as there are THREE phases.
1) Numbers of cars Waiting o be serviced.
2) The 3 Service Bays.
3) Number of cars completed.