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

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;

}
}