Following code - I need to use string instead of int. Can you help me convert to
ID: 3731758 • Letter: F
Question
Following code - I need to use string instead of int. Can you help me convert to string?
#include <iostream>
#include <fstream>
using namespace std;
void arrival (int car);
void depart (int car, char choice);
const int maxqueue = 5;
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[5];
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 << "----------Welcome to Valentina's Garage!---------- ";
cout << "Enter an 'A' if your car is arriving OR 'D' if your car is departing, followed by liscense#. Enter 'Q' to quit: " << endl;
cin >> choice;
cin >> car;
while ((choice!='q')||(choice!='Q'))
{
if ((choice=='a')||(choice=='A'))
arrival (car);
else if ((choice=='d')||(choice=='D'))
depart (car, choice);
cin >> choice;
cin >> car;
}
return 0;
}
//----------------------------------------------------------------------
//---------------------------------------------------------------------
void arrival(int car)
{
if (!(knock.full_queue()))
{
knock.insert_queue(car);
cout << "Car " << car << " has been parked in the KNOCKEMDEAD garage. " << endl;
}
else if(!(bash.full_queue()))
{
bash.insert_queue(car);
cout << "KNOCKEMDEAD is full! Car " << car << " has been parked in the BASHEMUP 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[5], c2[5], c3[5];
while(i<5)
{
c1[i]=1;
c2[i]=1;
c3[i]=1;
i++;
}
while (!(knock.empty_queue()))
{
knock.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 (!(bash.empty_queue()))
{
bash.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];
}
//---------------------------------------------------------------------
//---------------------------------------------------------------------
//END
Explanation / Answer
There is a header file <string> you can include which allows you to use string as a normal data type like int and char.
Please note one thing, I have replaced int with string in your code except at 2 places where you compared choice(char) with car(int) value. As char is also of int type only it did not created any issue, but string cannot be compared to char. I have marked that part of code as bold. Not able to figure out your logic, you can correct that part by yourself or let me know the logic in comments so that I can edit the answer.
Code
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void arrival (string car);
void depart (string car, char choice);
const int maxqueue = 5;
class queue_type
{
public:
void clear_queue();
bool empty_queue();
bool full_queue();
void insert_queue(string car);
void delete_queue(string& car);
int queue[5];
int front,rear;
};
//---------------------------------------------------------------------
//---------------------------------------------------------------------
queue_type bash, knock, street, temp;
int main()
{
string car;
char choice;
bash.clear_queue();
knock.clear_queue();
street.clear_queue();
temp.clear_queue();
cout << "----------Welcome to Valentina's Garage!---------- ";
cout << "Enter an 'A' if your car is arriving OR 'D' if your car is departing, followed by liscense#. Enter 'Q' to quit: " << endl;
cin >> choice;
getline(cin, car);
while ((choice!='q')||(choice!='Q'))
{
if ((choice=='a')||(choice=='A'))
arrival (car);
else if ((choice=='d')||(choice=='D'))
depart (car, choice);
cin >> choice;
getline(cin, car);
}
return 0;
}
//----------------------------------------------------------------------
//---------------------------------------------------------------------
void arrival(string car)
{
if (!(knock.full_queue()))
{
knock.insert_queue(car);
cout << "Car " << car << " has been parked in the KNOCKEMDEAD garage. " << endl;
}
else if(!(bash.full_queue()))
{
bash.insert_queue(car);
cout << "KNOCKEMDEAD is full! Car " << car << " has been parked in the BASHEMUP 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(string car, char choice)
{
int k=0, i=0, m;
int c1[5], c2[5], c3[5];
while(i<5)
{
c1[i]=1;
c2[i]=1;
c3[i]=1;
i++;
}
while (!(knock.empty_queue()))
{
knock.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 (!(bash.empty_queue()))
{
bash.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(string car)
{
if (rear == maxqueue)
rear =0;
else
rear = rear + 1;
car = queue[rear];
}
//----------------------------------------------------------------------
//---------------------------------------------------------------------
void queue_type::delete_queue(string& car)
{
if (front == maxqueue)
front = 0;
else
front = front + 1;
car = queue[front];
}