Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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;

}