Total not processing correctly

Hey all
I've written a program that is designed to add records which include, itemId, itemPrice, discount, quantity. It then adds the Item prices of all the records together (Well that's what it should be doing), but the problem i'm experiencing is that i'm not getting the total of all records. Any help would be appreciated.

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
136
137
138
139
140
141

#include <iostream>
using namespace std;
 
int readSaleRecord(unsigned&, double&, char&, unsigned&, double&);
double calculateItemCost(double itemPrice, double& totalCost, char discountType, unsigned quantity);
void displayTotalCost(double totalCost, unsigned recordNum, bool aborted);
 
int main()
{
 unsigned itemId, quantity;
 double itemPrice, totalCost, recordNum= 0, discount;
 char discountType;
 bool aborted=false;
 
readSaleRecord(itemId, itemPrice, discountType, quantity, recordNum);        
calculateItemCost(itemPrice, totalCost, discountType, quantity);          
displayTotalCost(totalCost, recordNum, aborted);
 
system("pause");
return 0;
}
 
void displayTotalCost(double totalCost, unsigned recordNum, bool aborted)
     {
      cout << "The total cost is $" <<totalCost<<"\n";
      cout << "from " <<recordNum<<" record(s) \n";
   return;
     }
 int readSaleRecord(unsigned & itemId, double & itemPrice,char & discountType, unsigned & quantity, double& recordNum)
{
    int anotherSale = 0;
    cout << "Enter item ID: ";
    cin >> itemId;
        if (itemId==0 || itemId >1000000)
           {
           cout << "incorrect id";
           system("pause");
           exit(0);
           }
   
    cout << "Enter full item price: ";
    cin >> itemPrice;
 
        if (itemPrice<0)
           {
           cout << "please enter postive integer";
           system("pause");
           exit(0);
           }
 
    cout << "Enter discount type: ";
    cin >> discountType;
 
        if (discountType!='N' && discountType!='D' && discountType!='T' && discountType!='B')
           {
           cout << "invalid entry";
           system("pause");
           exit(0);
           }
 
    cout << "Enter quantity: ";
    cin >> quantity;
        if (quantity<0)
           {
           cout << "please enter postive integer";
           system("pause");
           exit(0);
           }
 
    cout << "would you like to enter another sale? (1 for yes and 0 for no)";
    cin >> anotherSale;
    recordNum++;
 
 
         while(anotherSale==1)
             {
             cout << "Enter item ID: ";
             cin >> itemId;
 
                 if (itemId==0 || itemId >1000000)
                    {
                     system("pause");
                      exit(0);
                     }
   
             cout << "Enter full item price: ";
             cin >> itemPrice;
 
                  if (itemPrice<0)
                   {
                   cout << "please enter postive integer";
                   system("pause");
                   exit(0);
                   }
 
             cout << "Enter discount type: ";
             cin >> discountType;
 
                 if (discountType!='N' && discountType!='D' && discountType!='T' && discountType!='B')
                 {
                   cout << "invalid entry";
                   system("pause");
                   exit(0);
                   }
 
              cout << "Enter quantity: ";
              cin >> quantity;
 
                  if (quantity<0)
                      {
                     cout << "please enter postive integer";
                     system("pause");
                     exit(0);
                      }
 
              cout << "Enter another record? (1 for yes and 0 for no)";
              cin >> anotherSale;
              recordNum++;
              }
 
return (itemId, itemPrice, discountType, quantity, recordNum);
 
}

 
double calculateItemCost(double itemPrice, double& totalCost, char discountType, unsigned quantity){
double discount;
   switch (discountType){
 
       case 'N': discount= 1; break;
       case 'B': discount = 0.9; break;
       case 'D': discount = 0.8; break;
       case 'T': discount = 0.7; break;
     
        default: discount =1;
         }
totalCost=itemPrice*discount*quantity;
   
return totalCost;
}

Last edited on
On line 138:

totalCost=itemPrice*discount*quantity;

should be

totalCost+=itemPrice*discount*quantity;

so it adds to the totalCost rather than just changing it.

Hope it helps!
Hmm no luck unfortunately :(
Still trying though.
Thanks for the reply :)
Sorry to bump guys but im desperate.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
cin >> discountType;
 
        if (discountType!='N' && discountType!='D' && discountType!='T' && discountType!='B')
           {
           cout << "invalid entry";
           system("pause");
           exit(0);
           }
 
    cout << "Enter quantity: ";
    cin >> quantity;
        if (quantity<0)
           {
           cout << "please enter postive integer";
           system("pause");
           exit(0);
           }
 
    cout << "would you like to enter another sale? (1 for yes and 0 for no)";
    cin >> anotherSale;
    recordNum++;

dont u think the quantity, price, discounts are getting over written
u hav to use structures or modify code as so that calculations are done for each record:
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
 int readSaleRecord(unsigned & itemId, double & itemPrice,char & discountType, unsigned & quantity, double& recordNum)
{
    int anotherSale = 0;
    cout << "Enter item ID: ";
    cin >> itemId;
        if (itemId==0 || itemId >1000000)
           {
           cout << "incorrect id";
           system("pause");
           exit(0);
           }
   
    cout << "Enter full item price: ";
    cin >> itemPrice;
 
        if (itemPrice<0)
           {
           cout << "please enter postive integer";
           system("pause");
           exit(0);
           }
 
    cout << "Enter discount type: ";
    cin >> discountType;
 
        if (discountType!='N' && discountType!='D' && discountType!='T' && discountType!='B')
           {
           cout << "invalid entry";
           system("pause");
           exit(0);
           }
 
    cout << "Enter quantity: ";
    cin >> quantity;
        if (quantity<0)
           {
           cout << "please enter postive integer";
           system("pause");
           exit(0);
           }
 calculateItemCost(itemPrice, totalCost, discountType, quantity);
    cout << "would you like to enter another sale? (1 for yes and 0 for no)";
    cin >> anotherSale;
    recordNum++;
 
 
         while(anotherSale==1)
             {
             cout << "Enter item ID: ";
             cin >> itemId;
 
                 if (itemId==0 || itemId >1000000)
                    {
                     system("pause");
                      exit(0);
                     }
   
             cout << "Enter full item price: ";
             cin >> itemPrice;
 
                  if (itemPrice<0)
                   {
                   cout << "please enter postive integer";
                   system("pause");
                   exit(0);
                   }
 
             cout << "Enter discount type: ";
             cin >> discountType;
 
                 if (discountType!='N' && discountType!='D' && discountType!='T' && discountType!='B')
                 {
                   cout << "invalid entry";
                   system("pause");
                   exit(0);
                   }
 
              cout << "Enter quantity: ";
              cin >> quantity;
 
                  if (quantity<0)
                      {
                     cout << "please enter postive integer";
                     system("pause");
                     exit(0);
                      }
              calculateItemCost(itemPrice, totalCost, discountType, quantity);
              cout << "Enter another record? (1 for yes and 0 for no)";
              cin >> anotherSale;
              recordNum++;
              }
 
return (itemId, itemPrice, discountType, quantity, recordNum);
 
}

also use this for totalcost
 
totalCost+=itemPrice*discount*quantity;
Thanks very much for that, but after adding that into the code I'm now receiving:
1
2
3
4
5
6
 In function `int main()': 
17  [Warning] passing `double' for converting 2 of `void displayTotalCost(double, unsigned int, bool)' 
 In function `int readSaleRecord(unsigned int&, double&, char&, unsigned int&, double&)': 
70  `totalCost' undeclared (first use this function)
  (Each undeclared identifier is reported only once for each function it appears in.) 
122  [Warning] converting to `int' from `double'   



please share ur entire code after modification.And there is no need for returning any values for any of ur functions, also try removing return statements, make all function declarations and definitions to void return type.
Last edited on
Topic archived. No new replies allowed.