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

Why is this file not giving the expected output? It is in C++ code // Start #inc

ID: 3913979 • Letter: W

Question

Why is this file not giving the expected output? It is in C++ code

// Start
#include
#include
#include
using namespace std;
int main()
{

//     Declarations
//          InputFile inFile1;
            ifstream inFile1;
           
//          InputFile inFile2;
            ifstream inFile2;
           
//          OutputFile outFile1;
            ofstream outFile1;
           
//          num mClientNumber, fClientNumber
            int mClientNumber, fClientNumber;
           
//          string mClientName, fClientName
            string mClientName, fClientName;
           
//          bool atLeastOneFileNotAtEnd = true
            bool atLeastOneFileNotAtEnd = true;
           
//          bool inFile1Written = false
            bool inFile1Written = false;
           
//          bool inFile2Written = false
            bool inFile2Written = false;
           

//      output "File merge processing starting"
        cout << "File merge processing starting" << endl;
       
//      open inFile1 "MaleClients.rtf"
        inFile1.open("MaleClients.rtf");
       
//      open inFile2 "FemaleClients.rtf"
        inFile2.open("FemaleClients.rtf");
       
//      open outFile1 "MergedClients.rtf"
        outFile1.open("MergedClients.rtf");
       
//      read mClientNumber and mClientName from inFile1
        inFile1 >> mClientNumber, mClientName;
       
//      read fClientNumber and fClientName from inFile2
        inFile2 >> fClientNumber, fClientName;
       
       
       
// while (atLeastOneFileNotAtEnd == true )
    while(atLeastOneFileNotAtEnd == true)
    {   
   
//      if (inFile1 is EOF)
        if(inFile1.eof())
        {
//          if (inFile2Written == false)
            if(inFile2Written == false)
            {
//              output fClientNumber, fClientName to Outputfile
                outFile1 << fClientNumber << fClientName << endl;
               
//              inFile2Written = true
                inFile2Written = true;
//          endif
            }

//      else if (inFile2 is EOF)
        else if(inFile2.eof())
       
//          if (inFile1Written == false)
            if(inFile1Written == false)
            {
//              output mClientNumber, mClientName to Outputfile
                outFile1 << mClientNumber << mClientName << endl;
               
//              inFile1Written = true
                inFile2Written = true;
//          endif
            }

//      else if (mClientNumber < fClientNumber)
        else if(mClientNumber < fClientNumber)
       
        {//added; not original pseudocode
       
//          output mClientNumber, mClientName to Outputfile
            outFile1 << mClientNumber << mClientName << endl;
           
//          inFile1Written = true
            inFile1Written = true;
//      else
        }//added; not original pseudocode
        else
//          output fClientNumber, fClientName to Outputfile
            outFile1 << fClientNumber << fClientName << endl;
           
//          inFile2Written = true
            inFile2Written = true;
           
//      endif

        }
//
//
//      if ((inFile1 not EOF) AND (inFile1Written == true))
        if((!inFile1.eof()) && (inFile1Written == true))
        {
//          read mClientNumber and mClientName from inFile1
            inFile1 >> mClientNumber >> mClientName;
           
//          inFile1Written = false
            inFile1Written = false;
//      endif
        }

//      if ((inFile2 not EOF) AND (inFile2Written == true))
        if((!(inFile2.eof())) && (inFile2Written == true))
        {
//          read fClientNumber and fClientName from inFile2
            inFile2 >> fClientNumber >> fClientName;
           
//          inFile2Written = false
            inFile2Written = false;
//      endif
        }
//      if ((inFile is EOF) AND (inFile2 is EOF))
        if((inFile1.eof()) && (inFile2.eof()))
        {
//          atLeastOneFileNotAtEnd = false
            atLeastOneFileNotAtEnd = false;
//      endif
        }
// endwhile
    }

//      close inFile1
        inFile1.close();
       
//      close inFile2
        inFile2.close();
       
//      close outFile1
        outFile1.close();
       
//      output "Merging Complete"

   cout << "Merging Complete" << endl;
// Stop
return 0;
}

Explanation / Answer

// Start
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
int main()
{

// Declarations
// InputFile inFile1;
ifstream inFile1;

// InputFile inFile2;
ifstream inFile2;

// OutputFile outFile1;
ofstream outFile1;

// num mClientNumber, fClientNumber
int mClientNumber, fClientNumber;

// string mClientName, fClientName
string mClientName, fClientName;

// bool atLeastOneFileNotAtEnd = true
bool atLeastOneFileNotAtEnd = true;

// bool inFile1Written = false
bool inFile1Written = false;

// bool inFile2Written = false
bool inFile2Written = false;


// output "File merge processing starting"
cout << "File merge processing starting" << endl;

// open inFile1 "MaleClients.rtf"
inFile1.open("MaleClients.rtf");

// open inFile2 "FemaleClients.rtf"
inFile2.open("FemaleClients.rtf");

// open outFile1 "MergedClients.rtf"
outFile1.open("MergedClients.rtf");

// read mClientNumber and mClientName from inFile1
inFile1 >> mClientNumber>> mClientName;

// read fClientNumber and fClientName from inFile2
inFile2 >> fClientNumber>>fClientName;

// while (atLeastOneFileNotAtEnd == true )
while(atLeastOneFileNotAtEnd == true)
{

// if (inFile1 is EOF)
if(inFile1.eof())
{
// if (inFile2Written == false)
if(inFile2Written == false)
{
// output fClientNumber, fClientName to Outputfile
outFile1 << fClientNumber << fClientName << endl;

// inFile2Written = true
inFile2Written = true;
// endif
}

// else if (inFile2 is EOF)
else if(inFile2.eof())

// if (inFile1Written == false)
if(inFile1Written == false)
{
// output mClientNumber, mClientName to Outputfile
outFile1 << mClientNumber << mClientName << endl;

// inFile1Written = true
inFile2Written = true;
// endif
}

// else if (mClientNumber < fClientNumber)
else if(mClientNumber < fClientNumber)

{//added; not original pseudocode

// output mClientNumber, mClientName to Outputfile
outFile1 << mClientNumber << mClientName << endl;

// inFile1Written = true
inFile1Written = true;
// else
}//added; not original pseudocode
else
// output fClientNumber, fClientName to Outputfile
outFile1 << fClientNumber << fClientName << endl;

// inFile2Written = true
inFile2Written = true;

// endif

}
//
//
// if ((inFile1 not EOF) AND (inFile1Written == true))
if((!inFile1.eof()) && (inFile1Written == true))
{
// read mClientNumber and mClientName from inFile1
inFile1 >> mClientNumber >> mClientName;

// inFile1Written = false
inFile1Written = false;
// endif
}

// if ((inFile2 not EOF) AND (inFile2Written == true))
if((!(inFile2.eof())) && (inFile2Written == true))
{
// read fClientNumber and fClientName from inFile2
inFile2 >> fClientNumber >> fClientName;

// inFile2Written = false
inFile2Written = false;
// endif
}
// if ((inFile is EOF) AND (inFile2 is EOF))
if((inFile1.eof()) && (inFile2.eof()))
{
// atLeastOneFileNotAtEnd = false
atLeastOneFileNotAtEnd = false;
// endif
}
// endwhile
}

// close inFile1
inFile1.close();

// close inFile2
inFile2.close();

// close outFile1
outFile1.close();

// output "Merging Complete"

cout << "Merging Complete" << endl;
// Stop
return 0;
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote