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];
 }




