I am getting an error when I attempt to run my code Lexical or preprocessor issu
ID: 3888682 • Letter: I
Question
I am getting an error when I attempt to run my code Lexical or preprocessor issue". 'Rcall.h' file not found.
Rcall.h
//Include libraries
#ifndef RCALLS_H
#define RCALLS_H
#include <iostream>
#include <string>
//Use namespace
using namespace std;
//Define a class RCALLS
class RCALLS
{
//Define access specifier
public:
struct call_record
{
string cellNum;
double rStat;
double lengthMin;
double netCost;
double taxRate;
double callTax;
double tCost;
};
friend ostream& operator<<(ostream&, const RCALLS&);
friend bool is_Full(const RCALLS&);
friend bool is_Empty(const RCALLS&);
RCALLS();
void call_Stats();
void add_DB();
void remove_DB();
void end_Calls();
~RCALLS();
private:
call_record *call_DB, recordNew;
int size, num;
string key, prNum;
int search_DB(string);
void process_data_DB();
void process_data_Single();
void double_DB();
};
#endif
Rcall.cpp
//Include libraries
#include "Rcall.h"
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
//Use namespace
using namespace std;
//Define method
ostream& operator<<(ostream& out, const RCALLS& callR)
{
//Display
out << setw(16) << left << "Cell Phone #";
//Display
out << setw(8) << left << "Relays " << "Min " << "Net "
<< "Rate " << "Tax " << "Total Cost" << endl;
//Loop
for (int x = 0; x < callR.num; x++)
{
//Display records
out << callR.call_DB[x].cellNum << " "
<< callR.call_DB[x].rStat << " "
<< callR.call_DB[x].lengthMin << " "
<< callR.call_DB[x].netCost << " "
<< callR.call_DB[x].taxRate << " "
<< callR.call_DB[x].callTax << " "
<< callR.call_DB[x].tCost << " "
<< endl;
}
//Return
return out;
}
//Define a method
bool is_Full(const RCALLS& e)
{
//If size matches
if (e.num == e.size)
//Return
return 1;
//If size not matches
else
//Return
return 0;
}
//Define a method
bool is_Empty(const RCALLS& e)
{
//If it is 0
if (e.num == 0)
//Return
return 1;
//Otherwise
else
//Return
return 0;
}
//Define a method
RCALLS::RCALLS()
{
num = 0;
size = 5;
call_DB = new call_record[size];
for (int x = 0; x<size; x++)
{
call_DB[x].rStat = 0.0;
call_DB[x].lengthMin = 0.0;
call_DB[x].netCost = 0.0;
call_DB[x].taxRate = 0.0;
call_DB[x].callTax = 0.0;
call_DB[x].tCost = 0.0;
}
string filename;
ifstream in;
cout << " Please enter the filename " << endl;
cin >> filename;
in.open(filename.c_str());
while (!in.eof())
{
if (num == size)
{
double_DB();
}
in >> call_DB[num].cellNum
>> call_DB[num].rStat
>> call_DB[num].lengthMin;
num++;
}
in.close();
process_data_DB();
cout << " Initialization complete." << endl;
}
//Define a method
void RCALLS::call_Stats()
{
if (num == 0)
{
cout << "The array is empty; there is nothing to print " << endl;
}
else
{
cout << "Please enter the number you wish to search for." << endl;
cin >> prNum;
int i = search_DB(prNum);
if (i == -1)
{
cout << prNum << " is not in database, can not print. " << endl;
}
else
{
cout << setw(16) << left << "Cell Phone #";
cout << setw(8) << left << "Relays " << "Min " << "Net "
<< "Rate " << "Tax " << "Total Cost" << endl;
int z = 0;
double totalRelay = 0.0, totalMinutes = 0.0, totalNet = 0.0,
totalCost = 0.0, totalTax = 0.0;
while (z<num)
{
if (call_DB[z].cellNum == prNum)
{
cout << " " << call_DB[z].cellNum << " " << call_DB[z].rStat
<< " " << call_DB[z].lengthMin << " " << call_DB[z].netCost
<< " " << call_DB[z].taxRate << " " << call_DB[z].callTax
<< " " << call_DB[z].tCost << endl;
totalRelay = ((call_DB[z].rStat) + (totalRelay));
totalMinutes = ((call_DB[z].lengthMin) + (totalMinutes));
totalNet = ((call_DB[z].netCost) + (totalNet));
totalCost = ((call_DB[z].tCost) + (totalCost));
totalTax = ((call_DB[z].callTax) + (totalTax));
}
z++;
}
cout << "Totals " << totalRelay << " " << totalMinutes << " " << totalNet
<< " N/A " << totalTax << " " << totalCost << endl;
}
}
}
//Define a method
void RCALLS::add_DB()
{
recordNew.rStat = 0.0;
recordNew.lengthMin = 0.0;
recordNew.netCost = 0.0;
recordNew.taxRate = 0.0;
recordNew.callTax = 0.0;
recordNew.tCost = 0.0;
cout << "Please input the cell number of new record" << endl;
cin >> recordNew.cellNum;
cout << "Please input number of relay stations" << endl;
cin >> recordNew.rStat;
cout << "Please input length of call" << endl;
cin >> recordNew.lengthMin;
process_data_Single();
if (num == size)
{
cout << "Database is full." << endl;
double_DB();
call_DB[num++] = recordNew;
cout << "Size of database has been doubled "
<< " and the new record has been added." << endl;
}
else
{
call_DB[num++] = recordNew;
}
cout << "Add complete." << endl;
}
//Define a method
void RCALLS::remove_DB()
{
if (num == 0)
{
cout << "The array is empty; cannot remove " << key << endl;
}
else
{
cout << "Please enter the number you would like to remove from "
<< "the database." << endl;
cin >> key;
int i = search_DB(key);
if (i == -1)
{
cout << key << " is not in the database, unable to remove it. " << endl;
}
else
{
int x = 0;
while (x != -1)
{
x = search_DB(key);
if (x == -1)
break;
for (int j = x; j<num - 1; j++)
{
call_DB[j] = call_DB[j + 1];
}
num--;
}
}
}
cout << " Removal complete." << endl;
}
//Define a method
void RCALLS::end_Calls()
{
ofstream end;
int step = 0;
end.open("weekly_call_info.txt");
end.setf(ios::fixed);
end.setf(ios::showpoint);
end.precision(2);
while (step<num)
{
end << call_DB[step].cellNum << " "
<< call_DB[step].rStat << " "
<< call_DB[step].lengthMin << " "
<< call_DB[step].netCost << " "
<< call_DB[step].taxRate << " "
<< call_DB[step].callTax << " "
<< call_DB[step].tCost << " "
<< endl;
step++;
}
end.close();
cout << "The database has been saved to weekly_call_info.txt" << endl;
}
//Define a destructor
RCALLS::~RCALLS()
{
delete[] call_DB;
call_DB = 0;
num = 0;
size = 0;
}
//Define a method
int RCALLS::search_DB(string scan)
{
int x = 0;
for (; x<num; x++)
{
if (call_DB[x].cellNum == scan)
return x;
}
return -1;
}
//Define a method
void RCALLS::process_data_DB()
{
double rate = 0.0;
for (int track = 0; track<num; track++)
{
if (call_DB[track].rStat >= 1 && call_DB[track].rStat <= 5)
rate = 1;
else if (call_DB[track].rStat >= 6 && call_DB[track].rStat <= 11)
rate = 3;
else if (call_DB[track].rStat >= 12 && call_DB[track].rStat <= 20)
rate = 5;
else if (call_DB[track].rStat >= 21 && call_DB[track].rStat <= 50)
rate = 8;
else if (call_DB[track].rStat>50)
rate = 12;
call_DB[track].taxRate = rate / 100;
call_DB[track].netCost = ((call_DB[track].rStat / 50)*(0.40)*(call_DB[track].lengthMin));
call_DB[track].callTax = (call_DB[track].netCost*(rate / 100));
call_DB[track].tCost = call_DB[track].netCost + call_DB[track].callTax;
}
cout << " Processing complete." << endl;
}
//Define a method
void RCALLS::process_data_Single()
{
double rate = 0.0;
if (recordNew.rStat >= 1 && recordNew.rStat <= 5)
rate = 1;
else if (recordNew.rStat >= 6 && recordNew.rStat <= 11)
rate = 3;
else if (recordNew.rStat >= 12 && recordNew.rStat <= 20)
rate = 5;
else if (recordNew.rStat >= 21 && recordNew.rStat <= 50)
rate = 8;
else if (recordNew.rStat>50)
rate = 12;
recordNew.taxRate = rate / 100;
recordNew.netCost = ((recordNew.rStat / 50)*(0.40)*(recordNew.lengthMin));
recordNew.callTax = (recordNew.netCost*(rate / 100));
recordNew.tCost = recordNew.netCost + recordNew.callTax;
}
//Define a method
void RCALLS::double_DB()
{
call_record *temp_DB;
size = size * 2;
temp_DB = new call_record[size];
for (int x = 0; x<num; x++)
{
temp_DB[x].cellNum = call_DB[x].cellNum;
temp_DB[x].rStat = call_DB[x].rStat;
temp_DB[x].lengthMin = call_DB[x].lengthMin;
temp_DB[x].netCost = call_DB[x].netCost;
temp_DB[x].taxRate = call_DB[x].taxRate;
temp_DB[x].callTax = call_DB[x].callTax;
temp_DB[x].tCost = call_DB[x].tCost;
}
delete[] call_DB;
call_DB = temp_DB;
}
Main.cpp
//Include libraries
#include <iostream>
#include "Rcall.h"
//Use namespace
using namespace std;
//Define main
int main()
{
RCALLS call_DB;
int menu = 0;
while (menu != 6)
{
cout << " Menu" << endl
<< " (1) Add" << endl
<< " (2) Remove" << endl
<< " (3) Search for individual record" << endl
<< " (4) Write database to file" << endl
<< " (5) Print current database to screen" << endl
<< " (6) Exit program." << endl;
cin >> menu;
cout << endl;
switch (menu)
{
case 1:
call_DB.add_DB();
break;
case 2:
call_DB.remove_DB();
break;
case 3:
call_DB.call_Stats();
break;
case 4:
call_DB.end_Calls();
break;
case 5:
cout << call_DB;
break;
case 6:
menu = 6;
break;
default:
cout << "Incorrect value entered." << endl;
}
cout << endl;
}
system("pause");
return 0;
}
**Xcode looks like it's not liking the #include "RCALL.h"
and
#ifndef RCALLS_H
#define RCALLS_H
Explanation / Answer
-----------------------Rcall.h-------------------------
//Include libraries
#ifndef RCALLS_H
#define RCALLS_H
#include <iostream>
#include <fstream>
#include <cstring>
#include <iomanip>
//Use namespace
using namespace std;
namespace myRcalls
{
//Define a class RCALLS
class RCALLS
{
//Define access specifier
public:
struct call_record
{
string cellNum;
double rStat;
double lengthMin;
double netCost;
double taxRate;
double callTax;
double tCost;
};
friend ostream& operator<<(ostream& out, const RCALLS& callR)
{
//Display
out << setw(16) << left << "Cell Phone #";
//Display
out << setw(8) << left << "Relays " << "Min " << "Net "
<< "Rate " << "Tax " << "Total Cost" << endl;
//Loop
for (int x = 0; x < callR.num; x++)
{
//Display records
out << callR.call_DB[x].cellNum << " "
<< callR.call_DB[x].rStat << " "
<< callR.call_DB[x].lengthMin << " "
<< callR.call_DB[x].netCost << " "
<< callR.call_DB[x].taxRate << " "
<< callR.call_DB[x].callTax << " "
<< callR.call_DB[x].tCost << " "
<< endl;
}
//Return
return out;
}
friend bool is_Full(const RCALLS&);
friend bool is_Empty(const RCALLS&);
RCALLS();
void call_Stats();
void add_DB();
void remove_DB();
void end_Calls();
~RCALLS();
call_record *call_DB, recordNew;
int size, num;
string key, prNum;
int search_DB(string);
void process_data_DB();
void process_data_Single();
void double_DB();
};
}
#endif
------------------Rcall.cpp--------------
//Include libraries
#include "Rcall.h"
using namespace myRcalls;
//ostream& operator<<(ostream& out, const RCALLS& callR)
//Define a method
bool is_Full(const RCALLS& e)
{
//If size matches
if (e.num == e.size)
//Return
return 1;
//If size not matches
else
//Return
return 0;
}
//Define a method
bool is_Empty(const RCALLS& e)
{
//If it is 0
if (e.num == 0)
//Return
return 1;
//Otherwise
else
//Return
return 0;
}
//Define a method
RCALLS::RCALLS()
{
num = 0;
size = 5;
call_DB = new call_record[size];
for (int x = 0; x<size; x++)
{
call_DB[x].rStat = 0.0;
call_DB[x].lengthMin = 0.0;
call_DB[x].netCost = 0.0;
call_DB[x].taxRate = 0.0;
call_DB[x].callTax = 0.0;
call_DB[x].tCost = 0.0;
}
string filename;
ifstream in;
cout << " Please enter the filename " << endl;
cin >> filename;
in.open(filename.c_str());
while (!in.eof())
{
if (num == size)
{
double_DB();
}
in >> call_DB[num].cellNum
>> call_DB[num].rStat
>> call_DB[num].lengthMin;
num++;
}
in.close();
process_data_DB();
cout << " Initialization complete." << endl;
}
//Define a method
void RCALLS::call_Stats()
{
if (num == 0)
{
cout << "The array is empty; there is nothing to print " << endl;
}
else
{
cout << "Please enter the number you wish to search for." << endl;
cin >> prNum;
int i = search_DB(prNum);
if (i == -1)
{
cout << prNum << " is not in database, can not print. " << endl;
}
else
{
cout << setw(16) << left << "Cell Phone #";
cout << setw(8) << left << "Relays " << "Min " << "Net "
<< "Rate " << "Tax " << "Total Cost" << endl;
int z = 0;
double totalRelay = 0.0, totalMinutes = 0.0, totalNet = 0.0,
totalCost = 0.0, totalTax = 0.0;
while (z<num)
{
if (call_DB[z].cellNum == prNum)
{
cout << " " << call_DB[z].cellNum << " " << call_DB[z].rStat
<< " " << call_DB[z].lengthMin << " " << call_DB[z].netCost
<< " " << call_DB[z].taxRate << " " << call_DB[z].callTax
<< " " << call_DB[z].tCost << endl;
totalRelay = ((call_DB[z].rStat) + (totalRelay));
totalMinutes = ((call_DB[z].lengthMin) + (totalMinutes));
totalNet = ((call_DB[z].netCost) + (totalNet));
totalCost = ((call_DB[z].tCost) + (totalCost));
totalTax = ((call_DB[z].callTax) + (totalTax));
}
z++;
}
cout << "Totals " << totalRelay << " " << totalMinutes << " " << totalNet
<< " N/A " << totalTax << " " << totalCost << endl;
}
}
}
//Define a method
void RCALLS::add_DB()
{
recordNew.rStat = 0.0;
recordNew.lengthMin = 0.0;
recordNew.netCost = 0.0;
recordNew.taxRate = 0.0;
recordNew.callTax = 0.0;
recordNew.tCost = 0.0;
cout << "Please input the cell number of new record" << endl;
cin >> recordNew.cellNum;
cout << "Please input number of relay stations" << endl;
cin >> recordNew.rStat;
cout << "Please input length of call" << endl;
cin >> recordNew.lengthMin;
process_data_Single();
if (num == size)
{
cout << "Database is full." << endl;
double_DB();
call_DB[num++] = recordNew;
cout << "Size of database has been doubled "
<< " and the new record has been added." << endl;
}
else
{
call_DB[num++] = recordNew;
}
cout << "Add complete." << endl;
}
//Define a method
void RCALLS::remove_DB()
{
if (num == 0)
{
cout << "The array is empty; cannot remove " << key << endl;
}
else
{
cout << "Please enter the number you would like to remove from "
<< "the database." << endl;
cin >> key;
int i = search_DB(key);
if (i == -1)
{
cout << key << " is not in the database, unable to remove it. " << endl;
}
else
{
int x = 0;
while (x != -1)
{
x = search_DB(key);
if (x == -1)
break;
for (int j = x; j<num - 1; j++)
{
call_DB[j] = call_DB[j + 1];
}
num--;
}
}
}
cout << " Removal complete." << endl;
}
//Define a method
void RCALLS::end_Calls()
{
ofstream end;
int step = 0;
end.open("weekly_call_info.txt");
end.setf(ios::fixed);
end.setf(ios::showpoint);
end.precision(2);
while (step<num)
{
end << call_DB[step].cellNum << " "
<< call_DB[step].rStat << " "
<< call_DB[step].lengthMin << " "
<< call_DB[step].netCost << " "
<< call_DB[step].taxRate << " "
<< call_DB[step].callTax << " "
<< call_DB[step].tCost << " "
<< endl;
step++;
}
end.close();
cout << "The database has been saved to weekly_call_info.txt" << endl;
}
//Define a destructor
RCALLS::~RCALLS()
{
delete[] call_DB;
call_DB = 0;
num = 0;
size = 0;
}
//Define a method
int RCALLS::search_DB(string scan)
{
int x = 0;
for (; x<num; x++)
{
if (call_DB[x].cellNum == scan)
return x;
}
return -1;
}
//Define a method
void RCALLS::process_data_DB()
{
double rate = 0.0;
for (int track = 0; track<num; track++)
{
if (call_DB[track].rStat >= 1 && call_DB[track].rStat <= 5)
rate = 1;
else if (call_DB[track].rStat >= 6 && call_DB[track].rStat <= 11)
rate = 3;
else if (call_DB[track].rStat >= 12 && call_DB[track].rStat <= 20)
rate = 5;
else if (call_DB[track].rStat >= 21 && call_DB[track].rStat <= 50)
rate = 8;
else if (call_DB[track].rStat>50)
rate = 12;
call_DB[track].taxRate = rate / 100;
call_DB[track].netCost = ((call_DB[track].rStat / 50)*(0.40)*(call_DB[track].lengthMin));
call_DB[track].callTax = (call_DB[track].netCost*(rate / 100));
call_DB[track].tCost = call_DB[track].netCost + call_DB[track].callTax;
}
cout << " Processing complete." << endl;
}
//Define a method
void RCALLS::process_data_Single()
{
double rate = 0.0;
if (recordNew.rStat >= 1 && recordNew.rStat <= 5)
rate = 1;
else if (recordNew.rStat >= 6 && recordNew.rStat <= 11)
rate = 3;
else if (recordNew.rStat >= 12 && recordNew.rStat <= 20)
rate = 5;
else if (recordNew.rStat >= 21 && recordNew.rStat <= 50)
rate = 8;
else if (recordNew.rStat>50)
rate = 12;
recordNew.taxRate = rate / 100;
recordNew.netCost = ((recordNew.rStat / 50)*(0.40)*(recordNew.lengthMin));
recordNew.callTax = (recordNew.netCost*(rate / 100));
recordNew.tCost = recordNew.netCost + recordNew.callTax;
}
//Define a method
void RCALLS::double_DB()
{
call_record *temp_DB;
size = size * 2;
temp_DB = new call_record[size];
for (int x = 0; x<num; x++)
{
temp_DB[x].cellNum = call_DB[x].cellNum;
temp_DB[x].rStat = call_DB[x].rStat;
temp_DB[x].lengthMin = call_DB[x].lengthMin;
temp_DB[x].netCost = call_DB[x].netCost;
temp_DB[x].taxRate = call_DB[x].taxRate;
temp_DB[x].callTax = call_DB[x].callTax;
temp_DB[x].tCost = call_DB[x].tCost;
}
delete[] call_DB;
call_DB = temp_DB;
}
------------main.cpp--------------
//Include libraries
#include "Rcall.cpp"
//Define main
int main()
{
RCALLS call_DB;
int menu = 0;
while (menu != 6)
{
cout << " Menu" << endl
<< " (1) Add" << endl
<< " (2) Remove" << endl
<< " (3) Search for individual record" << endl
<< " (4) Write database to file" << endl
<< " (5) Print current database to screen" << endl
<< " (6) Exit program." << endl;
cin >> menu;
cout << endl;
switch (menu)
{
case 1:
call_DB.add_DB();
break;
case 2:
call_DB.remove_DB();
break;
case 3:
call_DB.call_Stats();
break;
case 4:
call_DB.end_Calls();
break;
case 5:
cout << call_DB;
break;
case 6:
menu = 6;
break;
default:
cout << "Incorrect value entered." << endl;
}
cout << endl;
}
system("pause");
return 0;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.