In this assignment you will simulate traffic flow for a park
Solution
#include <iostream>
#include <fstream>
using namespace std;
void enter (int car);
void depart (int car, char choice);
const int maxqueue = 7;
class queue_type
{
public:
void clear_queue();
bool empty_queue();
bool full_queue();
void insert_queue(int car);
void delete_queue(int& car);
int queue[8];
int front,rear;
};
//---------------------------------------------------------------------
queue_type bash, knock, street, temp;
int main()
{
int car;
char choice;
bash.clear_queue();
knock.clear_queue();
street.clear_queue();
temp.clear_queue();
cout << \"Enter an \'a\' if your car is arriving or enter a \'d\' if your car is departing. Enter q to quit: \" << endl;
cin >> choice;
cout << \"Enter license plate number: \" << endl;
cin >> car;
while ((choice!=\'q\')||(choice!=\'Q\'))
{
if ((choice==\'a\')||(choice==\'A\'))
enter (car);
else if ((choice==\'d\')||(choice==\'D\'))
depart (car, choice);
cin >> choice;
cin >> car;
}
return 0;
}
//----------------------------------------------------------------------
void enter(int car)
{
if (!(bash.full_queue()))
{
bash.insert_queue(car);
cout << \"Car \" << car << \" has been parked in the BASHEMUP parking garage. \" << endl;
}
else if(!(knock.full_queue()))
{
knock.insert_queue(car);
cout << \"BASHEMUP is full! Car \" << car << \" has been parked in the KNOCKEMDEAD parking garage. \" << endl;
}
else if (!(street.full_queue()))
{
street.insert_queue(car);
cout << \"Both lots are full! Car \" << car << \" has been parked in the street until a spot opens up. \" << endl;
}
}
void depart(int car, char choice)
{
int k=0, i=0, m;
int c1[7], c2[7], c3[7];
while(i<7)
{
c1[i]=1;
c2[i]=1;
c3[i]=1;
i++;
}
while (!(bash.empty_queue()))
{
bash.delete_queue(car);
if (choice != car)
{
if (k==0)
{
m=c1[i];
m++;
c1[i]=m;
cout << \"Car \" << car << \" departed and moved \" << c1[i] << \" times\" << endl;
i++;
temp.insert_queue(car);
}
}
else
{
cout << \"Car Deleted\" << endl;
k=1;
}
}
while (!(knock.empty_queue()))
{
knock.delete_queue(car);
if (choice != car)
{
if (k==0)
{
m=c2[i];
m++;
c2[i]=m;
cout << \"Car \" << car << \" departed and moved \" << c2[i] << \" times\" << endl;
i++;
temp.insert_queue(car);
}
}
else
{
cout << \"Car Deleted\" << endl;
k=1;
}
}
while (!(street.empty_queue()))
{
street.delete_queue(car);
if (choice != car)
{
if (k==0)
{
m=c3[i];
m++;
c3[i]=m;
cout << \"Car \" << car << \" departed and moved \" << c3[i] << \" times\" << endl;
i++;
temp.insert_queue(car);
}
}
else
{
cout << \"Car Deleted\" << endl;
k=1;
}
}
}
void queue_type::clear_queue()
{
front = maxqueue;
rear = maxqueue;
}
//----------------------------------------------------------------------
bool queue_type::empty_queue()
{
if (rear == front)
return true;
else
return false;
}
//----------------------------------------------------------------------
bool queue_type::full_queue()
{
int querear;
if (rear == maxqueue)
querear = 0;
else
querear = rear +1;
if (querear == front)
return true;
else
return false;
}
//----------------------------------------------------------------------
void queue_type::insert_queue(int car)
{
if (rear == maxqueue)
rear =0;
else
rear = rear + 1;
car = queue[rear];
}
//----------------------------------------------------------------------
void queue_type::delete_queue(int& car)
{
if (front == maxqueue)
front = 0;
else
front = front + 1;
car = queue[front];
}



