The Cupid matchmaking Service maintains two files - one for the male clients and
ID: 3565164 • Letter: T
Question
The Cupid matchmaking Service maintains two files -
one for the male clients and another for female clients.
Each file contains a client ID, last name, first name, and address.
Each file is in client ID order.
se the provide pseudocode to write a C++ application that
merges the two files into one file containing a list of all clients,
maintaining ID member order.
Male Clients.File
56 Bob_Johnson
100 Dan_Smith
200 Mike_Tay
Female Clients.File
21 Barbara_Jones
82 Sue_Todd
275 Mary_Donald
276 Cathy_Conner
300 Debbie_Baker
400 Kim_Tanner
// Pseudocode Project8
// Start
// Declarations
// InputFile inFile1;
// InputFile inFile2;
// OutputFile outFile1;
// num mClientNumber, fClientNumber
// string mClientName, fClientName
// bool atLeastOneFileNotAtEnd = true
// bool inFile1Written = false
// bool inFile2Written = false
// output "File merge processing starting"
// open inFile1 "MaleClients.rtf"
// open inFile2 "FemaleClients.rtf"
// open outFile1 "MergedClients.rtf"
// read mClientNumber and mClientName from inFile1
// read fClientNumber and fClientName from inFile2
// while ( atLeastOneFileNotAtEnd == true )
// if (inFile1 is EOF)
// if (inFile2Written == false)
// output fClientNumber, fClientName to Outputfile
// inFile2Written = true
// endif
// else if (inFile2 is EOF)
// if (inFile1Written == false)
// output mClientNumber, mClientName to Outputfile
// inFile1Written = true
// endif
// else if (mClientNumber < fClientNumber)
// output mClientNumber, mClientName to Outputfile
// inFile1Written = true
// else
// output fClientNumber, fClientName to Outputfile
// inFile2Written = true
// endif
//
//
// if ((inFile1 not EOF) AND (inFile1Written == true))
// read mClientNumber and mClientName from inFile1
// inFile1Written = false
// endif
// if ((inFile2 not EOF) AND (inFile2Written == true))
// read fClientNumber and fClientName from inFile2
// inFile2Written = false
// endif
// if ((inFile is EOF) AND (inFile2 is EOF))
// atLeastOneFileNotAtEnd = false
// endif
// endwhile
// close inFile1
// close inFile2
// close outFile1
// output "Merging Complete"
// Stop
Explanation / Answer
#include<iostream>
#include<fstream>
using namespace std;
// Pseudocode Project8
int main(){
// Start
// 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
inFile1Written = true;
// endif
}
// else if (mClientNumber < fClientNumber)
else if(mClientNumber < fClientNumber){
// output mClientNumber, mClientName to Outputfile
outFile1 << mClientNumber << mClientName << endl;
// inFile1Written = true
inFile1Written = true;
}
// else
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.