In: Computer Science
Hi, I don't think my program is calcualting right at all. When I used a text editor to check the # of batches, for 20, it returned 0, but the program is calculated 543 and 1 batch. On 21, there are 29 batches, but the program calculates 28 batches for Chocolate Type #21. I'd like to make sure it calculates everything correctly before I turn it in on Monday.
Here is my program:
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
ifstream infile;
ofstream outfile;
//Maximum number of Chocolate Types
const int ARRAY_SIZE = 25;
int printReport(int ChocTypeArray[], int
ChocPiecesArray[])
{
//Opens output file
outfile.open("ChocolateCo_Production_Results.txt");
//Print Title
outfile <<
"======================================================================================================"
<< endl;
outfile << "================================ O-So-Good
Chocolate Company Report =================================="
<< endl;
outfile <<
"======================================================================================================"
<< endl;
//Print Header
outfile << "Chocolate Type" << setw(42) << "
Pieces" << setw(20) << "Batches" << setw(20)
<< "Average/Batch" << endl;
outfile <<
"======================================================================================================"
<< endl;
for (int count = 0; count < ARRAY_SIZE; count++)
{
  float avg = 0;
  if (ChocTypeArray[count] > 0)
  {
   avg = (float)ChocTypeArray[count] /
(float)ChocPiecesArray[count];
  }
  
  outfile << count + 1 << "\t\t\t\t" <<
right << setw(24) << ChocTypeArray[count] <<
right << setw(20) << ChocPiecesArray[count] <<
right << setw(20) << avg << endl;
}
// Closes outout file
outfile.close();
return 0;
}
int main()
{
int ChocTypeArray[ARRAY_SIZE];
int ChocPiecesArray[ARRAY_SIZE];
//Initialize arrays
for (int count = 0; count < ARRAY_SIZE; count++)
{
  ChocTypeArray[count] = 0;
  ChocPiecesArray[count] = 0;
}
//Try to find data file
infile.open("Chocolates.txt");
if (!infile)
{
  cout << "Failed to open Chocolates.txt. Make sure
it is in the same directory as the program." << endl;
  return -1;
}
//Read data until the end of file
int _chocType, _chocPieces;
while (!infile.eof())
{
  infile >> _chocType >> _chocPieces;
  // Validates if chocType is between 1 and 25
  if (_chocType < 1 || _chocType >
ARRAY_SIZE)
  {
   continue; //skip
  }
  else
  {
   //Adjust for array index
   _chocType--;
   //Add the pieces to their appropriate type
   ChocTypeArray[_chocType] =
ChocTypeArray[_chocType] + _chocPieces;
   ChocPiecesArray[_chocType]++;
  }
}
//Print the report
printReport(ChocTypeArray, ChocPiecesArray);
return 0;
}
Here is the data from Chocolates.txt:
      12    
1026
      15     
248
      
7      402
      10    
1076
      16     
948
      14    
1174
       6    
1137
      
8      719
      
9      952
      14    
1516
      
9      830
      14     
296
      19     
596
      15     
874
      23     
100
      15    
1063
      16     
867
      
6       87
      11    
1330
      
1      217
      18     
802
      15     
943
      15     
165
      23     
100
      
2      866
      21     
656
      18     
885
       7    
1221
       9    
1032
      22     
490
       9    
1328
      12     
584
      11     
561
      14    
1355
      22     
750
      12     
800
      
9      686
      19     
401
      11    
1121
      16     
389
      
3      664
      
8      676
      12     
692
      
1      844
      
1      994
      
1      847
      24    
1173
      
7      792
       8    
1076
      19     
613
      14    
1085
       3    
1107
      12     
891
       3    
1121
      
6      870
      16     
300
      16    
1092
      24     
969
      12     
515
      
6      403
      11     
885
      
7      839
      14     
328
       1    
1023
      
7      653
      
6      276
      11     
217
       3    
1288
       6    
1109
      23     
643
      23     
384
       7    
1213
      
6      556
       4    
1224
       9    
1271
      15    
1167
      
8      595
      
6      746
       1    
1284
      18    
1300
      14     
747
      
5      650
      
4      934
      
9      952
      16    
1408
      24    
1012
      12     
696
      14     
333
      14     
478
      
5      434
      
1      548
      
6      285
      
9      341
      23     
925
      
3      150
      11    
1166
      
5      963
       8    
1010
      11    
1272
      
1      587
      21     
866
      12     
152
      11    
1280
      
2      821
      
4      778
      19    
1087
      15     
690
      11    
1239
       6    
1267
      
4      361
      12     
704
      
3      560
      16    
1231
      21    
1198
      
6      697
      
3      696
      
6      632
      16    
1543
      10     
211
      
2      285
      10     
845
      24     
554
      16    
1105
       6    
1048
       4    
1050
      16     
552
       3    
1077
      19    
1333
      19     
669
       8    
1172
      21    
1217
      
2      826
      18     
995
       7    
1140
       5    
1084
       7    
1016
      21     
624
      
3      654
      
5      990
       9    
1115
      23     
991
      
3      324
      
8      959
      16    
1483
      16    
1036
      
9      694
      
4      817
      24     
247
      
6      477
      12    
1307
      10     
596
      19    
1008
      
1      843
      12    
1166
      24     
693
      
3      397
      16    
1000
      19     
368
       9    
1101
      11    
1270
      15     
172
      
8      839
      12     
760
       6    
1099
      16    
1119
      
1      673
      10     
742
      
2      858
      11    
1015
      
8      771
      10     
537
      11     
475
      
6      857
      
1      932
      14     
728
      11     
914
      10     
652
      19     
436
      
2      415
      23     
724
      10     
974
      
2      874
      18     
365
      14    
1158
      
1      986
      
7      283
      21     
870
      10     
708
      
2      546
      
7      919
      15     
429
      
9      607
      19     
591
      16     
938
      
2      662
       6    
1044
      
3      549
       5    
1012
      19    
1003
      
3      654
      18    
1436
      
1      738
      14     
695
      14     
655
      10     
266
      11     
510
       6    
1265
      
7      603
      24     
687
      23    
1014
      
9      557
      
1      677
      16    
1177
      24     
712
       9    
1275
      14    
1188
      16     
311
      19     
581
      23     
237
      21    
1228
      23     
717
      24     
729
      10     
511
      
7      584
      23    
1043
      21     
941
      23     
100
      
2      966
      23     
492
       5    
1312
      
1      968
      18     
699
      
2      249
      24    
1062
      18    
1015
      
2      924
      16     
952
      14     
591
      
4      899
      
5      692
      11    
1435
      
7      760
      
2      852
      15     
964
      21     
921
       7    
1131
      
4      919
      
6      870
      
4      778
       2    
1507
      14     
213
      23     
713
      23     
861
      
1      595
      
4      623
      
7      794
      
7      880
      23    
1371
      
9      455
      19    
1217
      16     
187
       6    
1219
      10    
1135
      24     
365
      18     
906
      14     
576
      23     
700
      19     
444
     
10       11
      
3      817
      19    
1394
      10     
948
      
7      666
      24     
883
       6    
1447
      
7      385
      
1      976
       9    
1037
      14     
373
      
2      526
      19    
1148
      16    
1185
      24    
1338
      11     
854
       5    
1004
      15    
1212
      
8      281
      24    
1316
      
6       15
      18    
1224
      19     
654
      14     
483
       4    
1428
      
8      769
      19     
473
      14    
1185
      12     
691
       5    
1252
      
1      425
      
6      459
      18    
1036
      15     
713
      
6      840
      
9      545
      12     
515
      
4      599
      
1      619
       6    
1162
      
9      561
       5    
1105
      24     
453
      15     
456
      24     
644
      15     
324
      18     
808
      12     
860
      23     
307
      18     
552
      18     
568
      
8      256
      16    
1458
      23     
562
      19     
660
      19     
983
      
9      970
       7    
1154
      21     
594
      
9      590
      15     
174
       3    
1048
       9    
1079
      
3      536
      11    
1301
      16     
508
      
1      810
      21     
647
      10     
802
     
11       50
      24     
921
      18     
195
      
4      273
      
5      564
      11     
314
      21     
710
      
7      267
      15     
224
      18     
215
      
9      975
      
9      328
      
9      475
      23     
470
      12     
649
      
7      782
      16     
765
      16    
1019
      
9      537
       4    
1089
      21     
221
      15     
372
      
7      706
      19     
379
      10    
1015
       8    
1244
      23     
443
      
1      121
      
6      732
      10     
718
      23    
1084
      12     
424
      23     
536
      11     
308
      
7      637
      18     
611
      19     
870
      24     
310
      15    
1145
       9    
1005
      10     
672
     
10       59
      16    
1235
      19     
764
      18     
430
      12    
1122
      
8      956
      23     
704
      
1      507
      
8      822
      
3      761
       2    
1084
      11    
1066
      19     
439
      15     
859
      
5      494
      15     
498
       5    
1092
      15    
1457
      15     
458
      18    
1133
     
23       44
      10    
1215
      16     
856
      
8      942
      
1      321
      16     
663
      
1      463
       5    
1324
      
6      676
      
7      858
      23     
536
      
2      476
      24     
358
      21     
481
      
5      917
      10    
1293
       4    
1176
      
9      768
      10     
742
      10    
1294
      
6      608
      11     
237
      15    
1038
      11     
330
       2    
1117
      
4       82
      21     
516
      16    
1222
       8    
1347
      11     
922
      23    
1126
      
4      868
      18     
296
      24     
412
      18     
407
      23    
1421
      
4      930
      23     
981
      
2      146
      
3      348
      16     
361
      18     
553
      24    
1046
      
2      557
      
6      396
      23     
104
       3    
1197
      
1      892
      
6      218
      
1      865
      11     
644
      
6      471
      12     
938
      14     
759
      
2      180
      19     
739
       5    
1276
      19    
1067
      
7      299
      10     
715
      19     
514
      
7      225
      
5      574
      14     
797
      18     
556
      23     
531
      21     
516
      15    
1463
       4    
1264
      11    
1006
      12     
605
      
6      592
      
4      759
      
6      628
      16    
1469
      
8      843
      16     
638
      23     
614
      24     
439
      19     
775
      
9      711
       8    
1304
      24     
749
      16    
1143
      12     
829
      16    
1063
      
9      581
       8    
1113
      10     
851
      14     
853
      19     
781
   10       49
      16    
1035
      19     
264
      18     
490
      12     
922
      
8      956
      23     
704
      
1      507
      
8      822
      
3      761
       2    
1084
      14    
1221
      
6      772
      
7      911
      
7      545
      
8      724
      10    
1005
       7    
1133
      
2      189
      24    
1212
      18    
1118
      21     
241
      15    
1178
      
3      659
      24     
867
      
4      497
      
8      708
      18    
1308
      11     
411
      
7      500
      15     
538
      
8      366
       1    
1185
      19     
989
      
9      759
      10     
144
       8    
1210
      15    
1284
      
5      361
      23     
962
      
5      517
      
8      637
      15    
1239
      11     
992
      
7      394
      
2      725
      24     
114
      19    
1518
       8    
1127
      12     
415
       1    
1014
      15     
637
      
9      860
      
3      986
      21     
799
      24     
211
       4    
1212
       5    
1348
      
8      530
       5    
1362
       9    
1114
      10     
294
       8    
1414
      15    
1010
      
7      987
      
7      608
      10     
923
      21     
837
      15     
325
      16    
1127
      10    
1037
      12     
980
      10    
1160
      
6      331
      
1      840
      18     
673
      
3      561
      
9      921
      24     
752
      23    
1123
      21     
757
      
3      722
      
4      996
      19     
415
      10     
650
      11     
239
      
5      813
      
2      349
      
3      484
     
16       70
      
4      596
      
7      753
      
9      716
       6    
1022
      
4      351
      11     
185
      
2      403
      12     
570
      24     
905
      
4       50
      
9      211
      14     
737
      
8      587
      
5      532
      
1      544
     
19       21
       5    
1096
      11     
232
      
1      185
      24     
507
      
3      345
      16     
340
      
3      755
      15     
487
      
7      971
       2    
1309
      11     
500
      15     
968
      10     
739
      
8      755
     
12       60
      
3      770
      18     
601
      
9      284
     
21       55
      15    
1144
      19    
1524
       6    
1214
      
7      221
      19     
391
      23     
422
      
9      476
       1    
1054
      
1      967
       5    
1149
      
1      794
      23    
1014
      
4      605
      23     
860
      
4      311
      14     
443
      
6      659
     
19       85
      
1      501
      23     
346
      
1      268
      
8      941
      12     
918
      23     
779
      18     
791
      
8      561
       7    
1051
      24     
554
      
8      444
      14     
502
      12    
1043
       9    
1080
      
6      771
       1    
1274
      
8      737
      19     
197
      
3      703
      
6      748
      10    
1029
      14    
1095
      10    
1141
      
9      924
      
5      962
      
3      192
      10     
963
      12     
521
       1    
1195
      
4      529
       3    
1330
      
7      900
      21    
1118
      18    
1118
       5    
1060
      15     
459
      18    
1107
      24     
788
      16     
689
      
5      392
      18    
1106
      15     
848
      18     
531
      12     
242
      12     
669
      18     
962
      14     
658
      
9      799
      
8      712
      21     
873
      10    
1191
      11     
577
      
5      499
      24     
817
      23     
569
      
1      529
       1    
1152
      
3      813
      10     
901
      21     
739
      
3      641
      23     
581
      10     
768
      
6      810
       2    
1457
      
8      698
      14    
1351
      11    
1081
      21     
589
      
9      848
      16    
1043
      
8      710
      15     
904
      11    
1171
     
10       62
      16    
1097
      14     
691
       3    
1183
      11    
1286
      
7      606
     
23       89
      
7      859
      14     
481
      12     
839
      
2      550
       3    
1457
      
3      512
      12     
465
      14     
657
      21    
1149
      10    
1340
      
3      765
      
2      948
      
9      395
      16     
662
      
5      961
      23    
1389
      23    
1214
      
5      890
      
8      134
      22     
666
      22     
777
      23     
100
      22     
555
       3    
1295
      11     
307
      11     
605
      15    
1064
       6    
1214
      
1       64
      
8      907
      18    
1133
      
9      636
       3    
1134
      16    
1101
      
6      313
      
7      791
       7    
1130
       1    
1221
      21     
332
      24     
697
      
6      807
      
2       36
      
2      747
      16    
1219
      
3      859
      18     
639
      18     
312
       7    
1079
      10    
1074
      
5      678
     
18       59
      
1      325
      21     543
// C++ code
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
ifstream infile;
ofstream outfile;
//Maximum number of Chocolate Types
const int ARRAY_SIZE = 25;
int printReport(int ChocTypeArray[], int
ChocPiecesArray[])
{
//Opens output file
outfile.open("ChocolateCo_Production_Results.txt");
//Print Title
outfile <<
"======================================================================================================"
<< endl;
outfile << "================================ O-So-Good
Chocolate Company Report =================================="
<< endl;
outfile <<
"======================================================================================================"
<< endl;
//Print Header
outfile << "Chocolate Type" << setw(42) << "
Pieces" << setw(20) << "Batches" << setw(20)
<< "Average/Batch" << endl;
outfile <<
"======================================================================================================"
<< endl;
for (int count = 0; count < ARRAY_SIZE; count++)
{
float avg = 0;
if (ChocTypeArray[count] > 0)
{
   avg = (float)ChocTypeArray[count] /
(float)ChocPiecesArray[count];
}
outfile << count + 1 << "\t\t\t\t" << right
<< setw(24) << ChocTypeArray[count] << right
<< setw(20) << ChocPiecesArray[count] << right
<< setw(20) << avg << endl;
}
// Closes outout file
outfile.close();
return 0;
}
int main()
{
int ChocTypeArray[ARRAY_SIZE];
int ChocPiecesArray[ARRAY_SIZE];
//Initialize arrays
for (int count = 0; count < ARRAY_SIZE; count++)
{
ChocTypeArray[count] = 0;
ChocPiecesArray[count] = 0;
}
//Try to find data file
infile.open("Chocolates.txt");
if (!infile)
{
cout << "Failed to open Chocolates.txt. Make sure it is in
the same directory as the program." << endl;
return -1;
}
//Read data until the end of file
int _chocType, _chocPieces;
// break inside
while loop in order to avoid duplicate reading of last value in
file
while (true)
{
infile >> _chocType >> _chocPieces;
// Validates if chocType is between 1 and 25
if (_chocType < 1 || _chocType > ARRAY_SIZE)
{
   continue; //skip
}
else
{
   //Adjust for array index
   _chocType--;
   //Add the pieces to their appropriate type
   ChocTypeArray[_chocType] = ChocTypeArray[_chocType] +
_chocPieces;
   ChocPiecesArray[_chocType]++;
}
// break from
reading when no elements are left to r ead in file
if(infile.eof())
    break;
}
//Print the report
printReport(ChocTypeArray, ChocPiecesArray);
return 0;
}
/*
ChocolateCo_Production_Results.txt
======================================================================================================
================================ O-So-Good Chocolate Company Report
==================================
======================================================================================================
Chocolate
Type                                   
Pieces            
Batches       Average/Batch
======================================================================================================
1                         
32374                 
44            
735.773
2                         
22534                 
32            
704.188
3                         
30875                 
40            
771.875
4                         
21998                 
29            
758.552
5                         
29359                 
33            
889.667
6                         
32849                 
44            
746.568
7                         
32648                 
43            
759.256
8                         
33374                 
41                
814
9                         
33381                 
43            
776.302
10                          
33058                 
43            
768.791
11                          
29308                 
38            
771.263
12                          
23570                 
33            
714.242
13                              
0                  
0                  
0
14                          
25402                 
33            
769.758
15                          
29193                 
38            
768.237
16                          
39606                 
43             
921.07
17                              
0                  
0                  
0
18                          
28935                 
38            
761.447
19                          
27391                 
38            
720.816
20                              
0                  
0                  
0
21                          
20238                 
28            
722.786
22                           
3238                  
5              
647.6
23                          
30730                 
46            
668.043
24                          
24496                 
34            
720.471
25                              
0                  
0                  
0
*/