Can someone combine these three programs into one working program that that asks
ID: 3667816 • Letter: C
Question
Can someone combine these three programs into one working program that that asks the user for a text file and reads it in using fstream?
// 1
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
int main()
{
ifstream trans, oldmaster;
ofstream newmaster;
char name[25];
int masterAccNumber, transAccNumber;
double masterBalance, transBalance;
oldmaster.open("oldmast.dat"); //opening old master file
if(!oldmaster.is_open()) //error if it doesnt work
{
cout << "Can't open oldmaster file. ";
return 1;
}
trans.open("trans.dat");//opening old transaction file
if(!trans.is_open())//error if it doesnt work
{
cout << "Can't open transactions file. ";
return 1;
}
newmaster.open("newmast.dat");//opening new master file
if(!newmaster.is_open())//error if it doesnt work
{
cout << "Can't open new master file";
return 1;
}
//read data from old master and transaction file
oldmaster >> masterAccNumber >> name >> masterBalance;
trans >> transAccNumber >> transBalance;
while((oldmaster != 0) || (trans != 0)) //write to a new master file, till all information is written to both files
{
if(masterAccNumber == transAccNumber) //when both files are equal, modify them accordingly
{
newmaster << masterAccNumber << " " << name << " " << (masterBalance - transBalance) << endl;
oldmaster >> masterAccNumber >> name >> masterBalance;
trans >> transAccNumber >> transBalance;
}
else if((masterAccNumber < transAccNumber) || (trans == 0)) //when not equal and transaction account number is higher, write a new master
{
newmaster << masterAccNumber << " " << name << " " << masterBalance << endl;
oldmaster >> masterAccNumber >> name >> masterBalance;
}
else //if master file doesn't exist, write an error.
{
newmaster << "Unmatched transaction record for account number " << transAccNumber << endl;
trans >> transAccNumber >> transBalance;
}
}
cout << "New master final created." << endl;
return 0;
}
//2
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
//prototypes
void createOldMaster();
void createTransactions();
int main()
{
createOldMaster();
createTransactions();
return 0;
}
void createOldMaster()
{
ofstream oldmaster;
char name[25];
int accNumb;
double balance;
oldmaster.open("oldmast.dat");
if(!oldmaster.is_open())
{
cout << "Can't open old master file ";
}
cout << "Enter your information. " << endl;
while(accNumb != 0)
{
cout << " Your Account Number <0 to quit>";
cin >> accNumb;
cout << " Name: ";
cin >> name;
cout << " Balance: ";
cin >> balance;
oldmaster << accNumb << " " << name << " " << balance << endl;
}
}
void createTransactions()
{
ofstream trans;
int accNumb;
double balance;
trans.open("trans.dat");
if(!trans.is_open())
{
cout << "Can't open transactions file ";
}
cout << "Enter your information. " << endl;
while(accNumb != 0)
{
cout << " Account Number <0 to quit>";
cin >> accNumb;
cout << " Balance: ";
cin >> balance;
trans << accNumb << " " << balance << endl;
}
}
//3
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
int main()
{
ifstream newmaster; //inputing new master file
char x; // variable for new data
newmaster.open("newmast.dat"); //open new master file
if(!newmaster.is_open()) //error when file wont open
{
cout << "Can't create new master file ";
return 1;
}
while(newmaster.get(x))//reading data from new master file
cout << x;
cout << "End of file. " << endl;
return 0;
}
Explanation / Answer
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
//prototypes
void createOldMaster();
void createTransactions();
int main()
{
ifstream trans, oldmaster;
ofstream newmaster;
ifstream newmaster1; //inputing new master file
char x; // variable for new data
char name[25];
int masterAccNumber, transAccNumber;
double masterBalance, transBalance;
// first creating transaction and OldMaster
createOldMaster();
createTransactions();
oldmaster.open("oldmast.dat"); //opening old master file
if(!oldmaster.is_open()) //error if it doesnt work
{
cout << "Can't open oldmaster file. ";
return 1;
}
trans.open("trans.dat");//opening old transaction file
if(!trans.is_open())//error if it doesnt work
{
cout << "Can't open transactions file. ";
return 1;
}
newmaster.open("newmast.dat");//opening new master file
if(!newmaster.is_open())//error if it doesnt work
{
cout << "Can't open new master file";
return 1;
}
//read data from old master and transaction file
oldmaster >> masterAccNumber >> name >> masterBalance;
trans >> transAccNumber >> transBalance;
while((oldmaster != 0) || (trans != 0)) //write to a new master file, till all information is written to both files
{
if(masterAccNumber == transAccNumber) //when both files are equal, modify them accordingly
{
newmaster << masterAccNumber << " " << name << " " << (masterBalance - transBalance) << endl;
oldmaster >> masterAccNumber >> name >> masterBalance;
trans >> transAccNumber >> transBalance;
}
else if((masterAccNumber < transAccNumber) || (trans == 0)) //when not equal and transaction account number is higher, write a new master
{
newmaster << masterAccNumber << " " << name << " " << masterBalance << endl;
oldmaster >> masterAccNumber >> name >> masterBalance;
}
else //if master file doesn't exist, write an error.
{
newmaster << "Unmatched transaction record for account number " << transAccNumber << endl;
trans >> transAccNumber >> transBalance;
}
}
cout << "New master final created." << endl;
newmaster1.open("newmast.dat"); //open new master file
if(!newmaster1.is_open()) //error when file wont open
{
cout << "Can't create new master file ";
return 1;
}
while(newmaster1.get(x))//reading data from new master file
cout << x;
cout << "End of file. " << endl;
return 0;
}
void createOldMaster()
{
ofstream oldmaster;
char name[25];
int accNumb;
double balance;
oldmaster.open("oldmast.dat");
if(!oldmaster.is_open())
{
cout << "Can't open old master file ";
}
cout << "Enter your information. " << endl;
while(accNumb != 0)
{
cout << " Your Account Number <0 to quit>";
cin >> accNumb;
cout << " Name: ";
cin >> name;
cout << " Balance: ";
cin >> balance;
oldmaster << accNumb << " " << name << " " << balance << endl;
}
}
void createTransactions()
{
ofstream trans;
int accNumb;
double balance;
trans.open("trans.dat");
if(!trans.is_open())
{
cout << "Can't open transactions file ";
}
cout << "Enter your information. " << endl;
while(accNumb != 0)
{
cout << " Account Number <0 to quit>";
cin >> accNumb;
cout << " Balance: ";
cin >> balance;
trans << accNumb << " " << balance << endl;
}
}