In: Computer Science
Need this in C++
// Start
// Declarations
// InputFile masterFile;
// InputFile transactionFile;
// OutputFile newMasterFile;
// num mClientNumber, mtotalClientCost, tClientNumber, titemClientCost
// string mClientfName, mClientlName// output "Master File Updating Starting"
// open masterFile "Master.rtf"
// open transactionFile "Transaction.rtf"
// open newMasterFile "newMaster.rtf"
// read mClientNumber, mClientfName, mClientlName, mtotalClientCost from masterFile
// read tClientNumber, titemClientCost from transactionFile
// while ( transactionFile not EOF )
// while (( masterFile not EOF) and (mClientNumber < tClientNumber))
// output mClientNumber, mClientfName, mClientlName, mtotalClientCost to newMasterFile
// read mClientNumber, mClientfName, mClientlName, mtotalClientCost from masterFile
// endwhile
// if (masterFile is EOF)
// output "Error Client ID: ", tClientNumber, " not in Master File."
// else if (mClientNumber == tClientNumber) then
// mtotalClientCost = mtotalClientCost + titemClientCost
// output mClientNumber, mClientfName, mClientlName, mtotalClientCost to newMasterFile
// read mClientNumber, mClientfName, mClientlName, mtotalClientCost from masterFile
// else if (mClientNumber > tClientNumber) then
// output "Error Client ID: ", tClientNumber, " not in Master File."
// endif
// read tClientNumber, titemClientCost from transactionFile
// endwhile
// while (masterFile not EOF)
// output mClientNumber, mClientfName, mClientlName, mtotalClientCost to newMasterFile
// read mClientNumber, mClientfName, mClientlName, mtotalClientCost from masterFile
// endwhile
// output "Master File Updating Complete"
// close masterFile
// close transactionFile
// close newMasterFile
// Stop
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream masterFile;
ifstream transactionFile;
ofstream newMasterFile;
double mClientNumber, mtotalClientCost, tClientNumber, titemClientCost;
string mClientfName, mClientlName;
cout << "Master File Updating\n";
masterFile.open("MasterFile.rtf");
transactionFile.open("Transaction.rtf");
newMasterFile.open("newMaster.rtf");
masterFile >> mClientNumber >> mClientfName >> mClientlName >> mtotalClientCost;
transactionFile >> tClientNumber >> titemClientCost;
// read tClientNumber, titemClientCost from transactionFile
while( !transactionFile.eof() ) {
while( !masterFile.eof() and ( mClientNumber < tClientNumber ) ) {
newMasterFile << mClientNumber << " " << mClientfName << " " << mClientlName << " " << mtotalClientCost << endl;
masterFile >> mClientNumber >> mClientfName >> mClientlName >> mtotalClientCost;
}
if( masterFile.eof() ) {
cout << "Error Client ID: " << tClientNumber << " not in Master File.\n";
}
else if (mClientNumber == tClientNumber) {
mtotalClientCost = mtotalClientCost + titemClientCost;
newMasterFile << mClientNumber << " " << mClientfName << " " << mClientlName << " " << mtotalClientCost << endl;
masterFile >> mClientNumber >> mClientfName >> mClientlName >> mtotalClientCost;
}
else if ( mClientNumber > tClientNumber ) {
cout << "Error Client ID: " << tClientNumber << " not in Master File.\n";
}
transactionFile >> tClientNumber >> titemClientCost;
}
while( !masterFile.eof() ) {
newMasterFile << mClientNumber << " " << mClientfName << " " << mClientlName << " " << mtotalClientCost << endl;
masterFile >> mClientNumber >> mClientfName >> mClientlName >> mtotalClientCost;
}
cout << "Master File Updating Complete\n";
masterFile.close();
transactionFile.close();
newMasterFile.close();
}
You have not provided any Input Samples In Your Question. Anyway I Have Tested With The Following Inputs.
MasterFile.rtf
Transaction.rtf
This Was The Output File,
newMaster.rtf
NB: As you can see, the record for id 200 was omitted as per your pseudocode. we are only adding entries from the TransactionList. People In MasterFile but not in Transaction File Are Not Included In The newMaster.rtf
This Was The Console Output Which Showed Error For Ids not in the Master File :