Updating Master Files

Hello. I am in a C++ class and am working on a problem that is in our book where we need to make pseudocode and then translate it into C++, this chapter is on updating a master file from a transaction file. the pseudocode that i have completed and was told by my instructor was correct is

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
   Pseudocode PLD Chapter 7 #6a pg. 301
 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



any help translating this into C++ is very much welcome.
If you got that far in pseudocode I know that you have something to show us in C++ code. Have you attempted anything yet?
I posted this right before I went to bed and i just got back from work. I have the declarations figured out but besides comparing similar statements to examples. No i havent attempted this code yet. Il post again in a short bit with some completed things.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <cstdlib>
#include <iostream>
#include <fstream>

using namespace std;

int main(int argc, char *argv[])
{
    ifstream MasterFile;
    ifstream TransactionFile;
    ofstream New_MasterFile;
    int M_ClientNumber;
    int M_TotalClientCost;
    int T_ClientNumber;
    int T_ItemClientCost;
    string M_ClientName_F;
    string M_ClientName_1;
    
    cout << "Master File Updating Starting" << endl;
    MasterFile.open("Master.rtf");
    TransasctionFile.open("Transaction.rtf");
    New_MasterFile.open("newMaster.rtf");
    
    MasterFile >> M_ClientNumber;
    MasterFile >> M_ClientName_F;
    MasterFile >> M_TotalClientCost;
    TransactionFile >> T_ClientNumber;
    TransactionFile >> T_ItemClientCost


this is just up to the first while statement i believe.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
int main(int argc, char *argv[])
{
    ifstream MasterFile;
    ifstream TransactionFile;
    ofstream New_MasterFile;
    int mClientNumber;
    int mtotalClientCost;
    int tClientNumber;
    int titemClientCost;
    string mClientfName;
    string mClientlName;
    
    cout << "Master File Updating Starting" << endl;
    
    MasterFile.open("Master.txt");
    TransactionFile.open("Transaction.txt");
    New_MasterFile.open("newMaster.txt");
    
    MasterFile >> mClientNumber;
    MasterFile >> mClientfName;
    MasterFile >> mtotalClientCost;
    MasterFile >> mClientlName;
    TransactionFile >> tClientNumber;
    TransactionFile >> titemClientCost;
    
    while(!TransactionFile.eof())
    {
           while (( !MasterFile.eof()) and (mClientNumber < tClientNumber))
           {
           cout << mClientNumber << mClientfName << mClientlName << mtotalClientCost << endl;
          
           MasterFile >> mClientNumber;
           MasterFile >> mClientlName;
           MasterFile >> mClientfName;
           MasterFile >> mtotalClientCost;
           }   
               if (!MasterFile.eof())
              {         
               cout << "ERROR Client ID: " << tClientNumber << " not in Master File. " ;
               else if (mClientNumber == tClientNumber)
               {
                 mtotalClientCost = mtotalClientCost + titemClientCost;  
                    
                  output mClientNumber, mClientfName, mClientlName, mtotalClientCost to newMasterFile  
               }
           
              }
               
         
    }
    cout << "Master File Updating Complete " << endl;
    
    MasterFile.close();
    TransactionFile.close();
    New_MasterFile.close();
    
    
    system("PAUSE");
    return EXIT_SUCCESS;
}


updated code. stuck on the else if and i just realized that the output statments need to be directed to the MasterFile and im not sure how to send it specifically to that file.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
int main(int argc, char *argv[])
{
    ifstream MasterFile;
    ifstream TransactionFile;
    ofstream New_MasterFile;
    int mClientNumber;
    int mtotalClientCost;
    int tClientNumber;
    int titemClientCost;
    string mClientfName;
    string mClientlName;
    
    cout << "Master File Updating Starting" << endl;
    
    MasterFile.open("Master.txt");
    TransactionFile.open("Transaction.txt");
    New_MasterFile.open("newMaster.txt");
    
    MasterFile >> mClientNumber;
    MasterFile >> mClientfName;
    MasterFile >> mtotalClientCost;
    MasterFile >> mClientlName;
    TransactionFile >> tClientNumber;
    TransactionFile >> titemClientCost;
    
    while(!TransactionFile.eof())
    {
           while (( !MasterFile.eof()) and (mClientNumber < tClientNumber))
           {
    
           New_MasterFile << mClientNumber;
           New_MasterFile << mClientfName;
           New_MasterFile << mClientlName;
           New_MasterFile << mtotalClientCost;
           
           MasterFile >> mClientNumber;
           MasterFile >> mClientfName;
           MasterFile >> mClientlName;
           MasterFile >> mtotalClientCost;
           }   
               if (!MasterFile.eof())
           {         
               cout << "ERROR Client ID: " << tClientNumber << " not in Master File. " ;
               else if (mClientNumber == tClientNumber)
               {
                 mtotalClientCost = mtotalClientCost + titemClientCost;  
                    
                  New_MasterFile << mClientNumber;
                  New_MasterFile << mClientfName;
                  New_MasterFile << mClientlName;
                  New_MasterFile << mtotalClientCost;
                  
                  MasterFile >> mClientNumber;
                  MasterFile >> mClientfName;
                  MasterFile >> mClientlName;
                  MasterFile >> mtotalClientCost; 
               }
                 else if (mClientNumber > tClientNumber) 
                      {
                 cout << "Error Client ID: ", tClientNumber, " not in Master File.";
                      }             
           TransactionFile >> tClientNumber;
           TransactionFile >> titemClientCost;
           }
                           while (!MasterFile.eof())
                           {
                New_MasterFile << mClientNumber;
                New_MasterFile << mClientfName;
                New_MasterFile << mClientlName;
                New_MasterFile << mtotalClientCost;
                
                MasterFile >> mClientNumber;
                MasterFile >> mClientfName;
                MasterFile >> mClientlName;
                MasterFile >> mtotalClientCost;
                               }  
    }
    cout << "Master File Updating Complete " << endl;
    
    MasterFile.close();
    TransactionFile.close();
    New_MasterFile.close();
    
    
    system("PAUSE");
    return EXIT_SUCCESS;
}



ok i think this is the completed code but i am still getting errors on the else statements. The errors say that there is supposed to be a ; before the else but I cant figure out where Im still messing up. Any help would be much appreciated.
These errors are easier to find if you make sure to indent the code properly. You have an opening bracket on line 42 but no closing bracket.
I thought that i put the "end if" closing squigly mark before the TransactionFile is read on line 64. Let me try that and see if it works.
I guess you are right. I wasn't looking at the whole code. I just assumed the else on line 44 was supposed to belong to the if statement on line 41.

So the problem is that you have an else without an if. Maybe you don't want the else on line 44 at all. Only the if. I don't know for sure because I have only looked at the syntax without trying to understand the program logic.
Last edited on
I fixed the bracket problem and was getting garbage values when the program compiled. So I changed the int number values to double. Now its executing and saying that record 1 and record 5 are not in my source files. Didnt have that problem for the other values in the extra files so im not sure why that is giving me trouble but here is another updated version.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135

#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

// Pseudocode PLD Chapter 7 #6a pg. 301
// 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

int main(int argc, char *argv[])
{
    ifstream MasterFile;
    ifstream TransactionFile;
    ofstream New_MasterFile;
    int mClientNumber;
    double mtotalClientCost;
    int tClientNumber;
    double titemClientCost;
    string mClientfName;
    string mClientlName;
    
    cout << "Master File Updating Starting" << endl;
    
    MasterFile.open("Master.txt");
    TransactionFile.open("Transaction.txt");
    New_MasterFile.open("newMaster.txt");
    
    MasterFile >> mClientNumber;
    MasterFile >> mClientfName;
    MasterFile >> mtotalClientCost;
    MasterFile >> mClientlName;
    TransactionFile >> tClientNumber;
    TransactionFile >> titemClientCost;
    
    while(!TransactionFile.eof())
    {
           while (( !MasterFile.eof()) and (mClientNumber < tClientNumber))
           {
    
           New_MasterFile << mClientNumber;
           New_MasterFile << mClientfName;
           New_MasterFile << mClientlName;
           New_MasterFile << mtotalClientCost;
           
           MasterFile >> mClientNumber;
           MasterFile >> mClientfName;
           MasterFile >> mClientlName;
           MasterFile >> mtotalClientCost;
           }   
               if (!MasterFile.eof())
           {         
               cout << "ERROR Client ID: " << tClientNumber << " not in Master File. " ;
               }
               else if (mClientNumber == tClientNumber)
               {
                 mtotalClientCost = mtotalClientCost + titemClientCost;  
                    
                  New_MasterFile << mClientNumber;
                  New_MasterFile << mClientfName;
                  New_MasterFile << mClientlName;
                  New_MasterFile << mtotalClientCost;
                  
                  MasterFile >> mClientNumber;
                  MasterFile >> mClientfName;
                  MasterFile >> mClientlName;
                  MasterFile >> mtotalClientCost; 
               }
                 else if (mClientNumber > tClientNumber) 
                      {
                 cout << "Error Client ID: ", tClientNumber, " not in Master File.";
                      }             
           TransactionFile >> tClientNumber;
           TransactionFile >> titemClientCost;
           }
                           while (!MasterFile.eof())
                           {
                New_MasterFile << mClientNumber;
                New_MasterFile << mClientfName;
                New_MasterFile << mClientlName;
                New_MasterFile << mtotalClientCost;
                
                MasterFile >> mClientNumber;
                MasterFile >> mClientfName;
                MasterFile >> mClientlName;
                MasterFile >> mtotalClientCost;
                               }  
    
    cout << "Master File Updating Complete " << endl;
    
    MasterFile.close();
    TransactionFile.close();
    New_MasterFile.close();
    
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
Last edited on
Topic archived. No new replies allowed.