Answer to Question #50417 in C++ for zexy

Question #50417
a. Design a PhoneCall class that holds a phone number to which a call is placed, the length
of the call in minutes, and the rate charged per minute. Overload extraction and insertion
operators for the class.
b. Overload the == operator to compare two PhoneCalls. Consider one PhoneCall to be
equal to another if both calls are placed to the same number.
c. Create a main()function that allows you to enter 10 PhoneCalls into an array. If a
PhoneCall has already been placed to a number, do not allow a second PhoneCall to the
same number. Save the file as PhoneCall.cpp.
Expert's answer
#include <string>
#include <iostream>
using namespace std;
class PhoneCall {
string number;
// In minutes
int callLength;
// Per minute
double rate;
bool operator==(const PhoneCall &r) {
return this->number == r.number;
friend istream& operator>> (istream& in, PhoneCall & phoneCall);
friend ostream& operator<< (ostream& out, const PhoneCall &phoneCall);
istream& operator>> (istream& in, PhoneCall & phoneCall) {
in >> phoneCall.number >> phoneCall.callLength >> phoneCall.rate;
return in;
ostream& operator<< (ostream& out, const PhoneCall &phoneCall) {
out << "Phone call: \n";
out << "Number: " << phoneCall.number << endl;
out << "Time(minutes): " << phoneCall.callLength << endl;
out << "Rate(per minute): " << phoneCall.rate << endl;
return out;
int main() {
const int arrSize = 10;
PhoneCall calls[arrSize];
cout << "Enter " << arrSize << " phone calls(format: number length rate): \n";
for (int i = 0; i < 10; ++i) {
cin >> calls[i];
// Check if there is a call to such number
bool isCall = false;
for (int j = i - 1; j >= 0; --j) {
if (calls[i] == calls[j]) {
isCall = true;
if (isCall) {
cout << "Call to this number already exists. Try once more.\n";
return 0;

Need a fast expert's response?

Submit order

and get a quick answer at the best price

for any assignment or question with DETAILED EXPLANATIONS!


No comments. Be the first!

Leave a comment

Ask Your question

New on Blog