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
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
#include
//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
#include
#include
#include
//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\t" << "Min\t" << "Net\t"
<< "Rate\t" << "Tax\t" << "Total Cost" << endl;
//Loop
for (int x = 0; x < callR.num; x++)
{
//Display records
out << callR.call_DB[x].cellNum << "\t"
<< callR.call_DB[x].rStat << "\t"
<< callR.call_DB[x].lengthMin << "\t"
<< callR.call_DB[x].netCost << "\t"
<< callR.call_DB[x].taxRate << "\t"
<< callR.call_DB[x].callTax << "\t"
<< callR.call_DB[x].tCost << "\t"
<< 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 { 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\t" << "Min\t" << "Net\t" << "Rate\t" << "Tax\t" << "Total Cost" << endl; int z = 0; double totalRelay = 0.0, totalMinutes = 0.0, totalNet = 0.0, totalCost = 0.0, totalTax = 0.0; while (z { if (call_DB[z].cellNum == prNum) { cout << " " << call_DB[z].cellNum << "\t" << call_DB[z].rStat << "\t" << call_DB[z].lengthMin << "\t" << call_DB[z].netCost << "\t" << call_DB[z].taxRate << "\t" << call_DB[z].callTax << "\t" << 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\t\t" << totalRelay << "\t" << totalMinutes << "\t" << totalNet << " \tN/A\t" << totalTax << "\t" << 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 { 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 { end << call_DB[step].cellNum << "\t" << call_DB[step].rStat << "\t" << call_DB[step].lengthMin << "\t" << call_DB[step].netCost << "\t" << call_DB[step].taxRate << "\t" << call_DB[step].callTax << "\t" << call_DB[step].tCost << "\t" << 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 { 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 { 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 { 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 #include "Rcall.h" //Use namespace using namespace std; //Define main int main() { RCALLS call_DB; int menu = 0; while (menu != 6) { cout << " Menu" << endl << "\t(1) Add" << endl << "\t(2) Remove" << endl << "\t(3) Search for individual record" << endl << "\t(4) Write database to file" << endl << "\t(5) Print current database to screen" << endl << "\t(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
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
