
please wait
/*This is the PRIMARY FILE for the garage project. =============================================================*/ #include <iostream> #include <fstream> using namespace std; const int maxqueue = 5; class queue_type { public: void clear_queue(); bool empty_queue(); bool full_queue(); void insert_queue(int numb); void delete_queue(int& numb); int queue[6]; int front, rear; }; queue_type a, b, c, a2, b2, c2; //============================================================= int main() { int x = 0; int q = 0; //temp value for queue popping char n; //n is arrive, depart, or exit; x is numb number a.clear_queue(); b.clear_queue(); c.clear_queue(); a2.clear_queue(); b2.clear_queue(); c2.clear_queue(); //============================================================= // STARTUP CODE //============================================================= do { cout << " Is a vehicle arriving or departing?\n" << endl; cout << "Car Arriving : A || Car Departing : D || Exit : X" << endl; cout << "Enter selection letter ==> "; cin >> n; if ((!(n=='x')) && (!(n=='X'))) { cout << "\nEnter a license number ==> "; cin >> x; } //============================================================= // ARRIVE CODE //============================================================= while ((n=='a') || (n=='A')) { if (!(a.full_queue())) { a.insert_queue(x); cout << "Vehicle has been parked in Garage 1." << endl; cout << "============================================================================" << endl << endl; break; } else if (!(b.full_queue())) { b.insert_queue(x); cout << "Knockemdead garage is full. Vehicle has been parked in Garage 2." << endl; cout << "============================================================================" << endl << endl; break; } else if (!(c.full_queue())) { c.insert_queue(x); cout << "Both garages are full. Vehicle has been parked on the street." << endl; cout << "============================================================================" << endl << endl; break; } else { cout << "All garages and the street are full." << endl << endl; cout << "============================================================================" << endl << endl; break; } }//End while //============================================================= // DEPART CODE //============================================================= while ((n=='d') || (n=='D')) //n is decision, x is plate number { while (!(a.empty_queue())) { a.delete_queue(q); a2.insert_queue(q); }//end while while (!(b.empty_queue())) { b.delete_queue(q); b2.insert_queue(q); }//end while while (!(c.empty_queue())) { c.delete_queue(q); c2.insert_queue(q); }//end while while (!(a2.empty_queue())) //A queue filling { a2.delete_queue(q); if (x == q) { cout << "Car with plate " << x << " has left Garage 1." << endl; } else { a.insert_queue(q); }//endelse }//endwhile while (!(b2.empty_queue())) //B queue filling { b2.delete_queue(q); if (x == q) { cout << "Car with plate " << x << " has left Garage 2." << endl; } else { while (!(a.full_queue())) { a.insert_queue(q); } while (a.full_queue()) { b.insert_queue(q); } }//endelse }//endwhile while (!(c2.empty_queue())) //C queue filling { c2.delete_queue(q); if (x == q) { cout << "Car with plate " << x << " has left the street." << endl; } else { while (!(b.full_queue())) { b.insert_queue(q); } while (b.full_queue()) { c.insert_queue(q); } }//endelse }//endwhile } }//end do while ((!(n == 'x')) && (!(n == 'X'))); return 0; } //============================================================= 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 numb) { if (rear == maxqueue) rear = 0; else rear = rear + 1; queue[rear] = numb; } //============================================================= void queue_type::delete_queue(int& numb) { if (front == maxqueue) front = 0; else front = front + 1; numb = queue[front]; } //============================================================= |