I must ask user number of students who took test, then create a dynamic array and then get the scores for each student. Then calculate the sum,average of the scores. My problem is that once it calculates it continues to ask user for student scores. I am confused with this while loop. Below is my source code. Any ideas?

#include <iostream>
#include <cmath>
#include <cstdlib>


using namespace std;

int main()
{

        double grade= 0;
        double sum = 0;
        int count = 0;
        double avg_score = 0;

        cout << " Enter the number of students who took test : " ;
        int  num_students = 0;
        cin >> num_students;
//      cout << endl;

//      double* p = new double[num_students];
        while(true){
        if (num_students== 0 || num_students == -1)
        {

                cout << " Enter a postive value please!" << endl;
                cout << " Enter the number of students who took tests: ";
                cin >> num_students;
                cout << endl;
        }       // end of if statement


        double* p = new double[num_students];




        for (int i = 1; i <= num_students; i++)
        {
                cout << " Enter grade for Student " << i << ":" ;
                cin >> grade;


                p[i] = grade;
                cout << p[i]<< endl;
                sum += grade;
                ++count;
        }       // end of for loop
        delete []p;

        avg_score = sum / count;


        cout  << " The average of the test scores is " << avg_score << endl;
        cout  << " The sum of the test scores is " << sum << endl;
        }       // end of while loop
        return 0;
}

You could just put a break; at the end of your while loop, or the better way would be to change the while loop to only ask for the information while num_students < 1. (Then you just do the for loop and exit). Also, be careful mixing your int's and double's for the same variable.

#include <iostream>
#include <cmath>
#include <cstdlib>
 
using namespace std;
int main()
{
double grade= 0;
double sum = 0;
int count = 0;
double avg_score = 0;
cout << " Enter the number of students who took test : " ;
double num_students = 0;
cin >> num_students;
while (num_students < 0 )
{
	   cout << " Invalid Value! ";
		cout << " Enter the number of students who took test: ";
		cin >> num_students;
		cout << endl;
} 
double* p = new double[num_students];
 
for (double i = 1; i <= num_students; i++)
{
		cout << " Enter grade for Student " << i << ":" ;
		cin >> grade;
 
		p[i] = grade;
		cout << p[i]<< endl;
		sum += grade;
		++count;
} // end of for loop
delete []p;
avg_score = sum / count;
 
cout << " The average of the test scores is " << avg_score << endl;
cout << " The sum of the test scores is " << sum << endl;
return 0;
}
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.