Be Great Be Great - 22 days ago 5
C++ Question

Highest and Lowest Integer C++

when I run this program is a "Run-Time Check Failure #2 stack around the variable 'numGrades' was corrupted" appears. Also the lowest grade doesn't output the correct answer. Any help would be greatly appreciated!

#include <iostream> // cin, cout

using namespace std;

const int TEN_GRADES = 10; // pre-defined number of grades

int main()
{
int numGrades[10];
double avg, highest = numGrades[0], lowest = numGrades[0], less, greater, grades;
double sum = 0;

// greeting message
cout << "---------------------------------" << endl
<< " Sandro's Statistics Generator " << endl
<< "---------------------------------" << endl << endl;

// requesting number of grades
cout << "Hello Professor, how many grades do I need to analyse this time? ";
cin >> numGrades[10];

if (numGrades[1] == 0)
{
cout << "\nGuess you changed your mind!!!" << endl
<< "Ending program now..." << endl << endl;
return 0;
}

// if user doesn't enter 0 user is ready to begin
cout << "Okay, I am ready. Start..." << endl;
for (int count = 0; count < numGrades[10]; count++)
{
cin >> numGrades[count];
sum += numGrades[10];
}

// to get the average
avg = sum / TEN_GRADES;

// to get the highest and lowest mark

for (int count = 0; count < TEN_GRADES; count++)
{
if (numGrades[count] > highest)
highest = numGrades[count];
}

for (int count = 0; count < TEN_GRADES; count++)
{
if (numGrades[count] < lowest)
lowest = numGrades[count];
}

// output requested statistics
cout << "Here are the requested stats for the " << numGrades << " grades." << endl
<< "The class average is " << avg << endl
<< "The highest grade is " << highest << endl
<< "The lowest grade is " << lowest << endl;

return 0;


}

Answer

Oh god, I don't even do c++ but I think one of my eyes bled a little.

Please review (or tell whoever coded this to review) how to create and assign values to them.

Then review simple data structures (like arrays) and loops.

One good way to start is to analyze the following WORKING code of your program:

Please mark as correct if it helps, and if you have any questions... Cheers!

#include <iostream>
#include <string>

using namespace std;

const int TEN_GRADES = 10;   // pre-defined number of grades

int main()
{
int numGrades[10];
double avg, highest = 0, lowest = 0, less, greater, grades;
double sum = 0;

// greeting message
cout << "---------------------------------" << endl
     << "  Newbie Statistics Generator  " << endl
     << "---------------------------------" << endl << endl;

// requesting number of grades 
cout << "Hello Professor, please enter 10 grades: "<<endl;

//THIS PART: loops ten times to input the grades
for (int count = 0; count < TEN_GRADES; count ++)
{
    cout << "Grade number "<<count<<":";
    cin >> numGrades[count];

}

//I get what you want to do here, but consider adding another exit condition here, what if the second grade is really 0 ?
if (numGrades[1] == 0)
{
    cout << "\nGuess you changed your mind!!!" << endl
         << "Ending program now..." << endl << endl;
    return 0;
}

// if user doesn't enter 0 user is ready to begin
cout << "Okay, I am ready. Start..." << endl;
for (int count = 0; count < TEN_GRADES; count++)
{
    sum += numGrades[count];
}

// to get the average
avg = sum / TEN_GRADES;

// to get the highest and lowest mark
for (int count = 0; count < TEN_GRADES; count++)
{
    if (numGrades[count] > highest)
        highest = numGrades[count];
}

for (int count = 0; count < TEN_GRADES; count++)
{
    if (numGrades[count] < lowest)
        lowest = numGrades[count];
}
// output requested statistics
cout << "Here are the requested stats for the " << TEN_GRADES << " grades."     << endl
     << "The class average is " << avg << endl
     << "The highest grade is " << highest << endl
     << "The lowest grade is " << lowest << endl;

return 0;
}
Comments