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;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.