I am a beginner at C++, the output is pretty self explanatory. I'm trying to make a number sorting program with other features, but the numbers are all wrong.
Code:
#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
void readData(int list[], int size);
int main()
{
int size = 50;
int scores[50] = {0};
int range (0);
int rangeA(0);
int rangeB(0);
int rangeC(0);
int rangeD(0);
int a;
int b;
double avg;
int c;
int d;
double avgA;
int e;
int f;
double avgB;
int g;
int h;
double avgC;
int i;
int j;
double avgD;
int aAvg (0);
int aAvgA(0);
int aAvgB(0);
int aAvgC(0);
int aAvgD(0);
int paa, paaA, paaB, paaC, paaD;
readData(scores, size); // call the function to load the array
sort(scores, scores + 50);
for ( int n=0 ; n<50 ; ++n )
{
if(scores[n] <=599&&scores[n] >= 300)
{
rangeA = rangeA + 1;
c = scores[n];
d = scores[n] + c;
}
if(scores[n] <=699&&scores[n] >= 600)
{
rangeB = rangeB + 1;
e = scores[n];
f = scores[n] + e;
}
if(scores[n] <=799&&scores[n] >= 700)
{
rangeC = rangeC + 1;
g = scores[n];
h = scores[n] + g;
}
if(scores[n] <=850&&scores[n] >= 800)
{
rangeD = rangeD + 1;
i = scores[n];
j = scores[n] + i;
}
range = range + 1;
a = scores[n];
b = scores[n] + a;
}
int highA, highB, highC, highD;
int lowA, lowB, lowC, lowD;
avg = b/range;
avgA = d/rangeA;
avgB = f/rangeA;
avgC = h/rangeA;
avgD = j/rangeA;
lowA = scores[1];
highA = scores[rangeA];
lowB = scores[rangeA + 1];
highB = scores[rangeB];
lowC = scores[rangeB +1];
highC = scores[rangeC];
lowD = scores[rangeC + 1];
highD = scores[rangeD];
for ( int n=0 ; n<50 ; ++n )
{
if(scores[n] > avg)
{
aAvg = aAvg + 1;
}
if(scores[n] > avgA && scores[n] <= 599)
{
aAvgA = aAvgA + 1;
}
if(scores[n] > avgB && scores[n] <= 699)
{
aAvgB = aAvgB + 1;
}
if(scores[n] > avgC && scores[n] <= 799)
{
aAvgC = aAvgC + 1;
}
if(scores[n] > avgD && scores[n] <= 850)
{
aAvgD = aAvgD + 1;
}
}
paa = (aAvg/range)*100;
paaA = (aAvgA/rangeA)*100;
paaB = (aAvgB/rangeB)*100;
paaC = (aAvgC/rangeC)*100;
paaD = (aAvgD/rangeD)*100;
cout << "Score Range No. Average Lowest Highest No. of scores above average Percent above average" << endl;
cout << "300-599 " << rangeA << " " << avgA << " " << lowA << " " << highA << " " << aAvgA << " " << paaA << "%" << endl;
cout << "600-699 " << rangeB << " " << avgB << " " << lowB << " " << highB << " " << aAvgB << " " << paaB << "%" << endl;
cout << "700-799 " << rangeC << " " << avgC << " " << lowC << " " << highC << " " << aAvgC << " " << paaC << "%" << endl;
cout << "800-850 " << rangeD << " " << avgD << " " << lowD << " " << highD << " " << aAvgD << " " << paaD << "%" << endl;
cout << "Average: " << avg << endl;
cout << "No. of scores above average: " << aAvg << endl;
cout << "Percent above average: " << paa << "%" << endl;
system("PAUSE");
return 0;
}
void readData(int list[], int size) // This function loads an array from an input file
{
ifstream infile;
infile.open("Input.DAT");
if (!infile)
{
cout << "Cannot open the input file. Program terminates!"
<< endl;
return ;
}
int score;
int index = 0;
infile >> list[index];
while (index < size - 1)
{
index = index + 1;
infile >> list[index];
}
infile.close();
}
Input.DAT
Code:
376 389 450 735 600 576 612 700 450 628 778 389 667 500 475 550 687 791 829 344
549 476 400 587 535 657 789 583 340 764 422 826 566 436 565 834 533 423 837 701
847 521 746 356 582 465 493 593 425 421
I can't for the life of me figure out why the numbers are all messed up.