I can not seem to figure out how to drop the lowest score. When I run it it says the lowest score dropped was 0. How do I fix this?

#include<iostream>
#include <string>
#include <cmath>

using namespace std ;


string getName ();
int averageScores( int);
void printMessage (string, int);
void tallyScores ( int, int&,int&,int&);

int main()
{

const int NUMBER = 4; // number of scores for each student 
char moreStudents = 'y';
string who ; //name of the student
int testAverage ;

cout << "For each student, you will be prompted for a name and "<< NUMBER << " test scores\n";
while ( moreStudents =='y' || moreStudents == 'Y') 

{ 
who = getName () ;
testAverage = averageScores ( NUMBER);
printMessage ( who, testAverage ); 
cout << "\n\nMore students ? Y or N \t\t" ;
cin >> moreStudents ;
cout << endl;
cin.ignore (10, '\n');
} 

system ("pause");
return 0;
} // end main
////////////////////////////////////////…
// Prompts the user to input the student's name
string getName ()
{ 
string name ;

cout << "\nEnter student name " ;
getline ( cin, name);
return name ;
} 
////////////////////////////////////////…
// this function inputs and averages scores. Parameter howmany tells the 
// number of scores to be input.

int averageScores( int howmany )
{
int sum;
int score1, score2, score3, score4 ;
double decimalAverage;
int average ; // integer average 
int low;

cout << "Enter four interger scores with a space in between: " ;
cin >> score1 >> score2 >> score3 >> score4 ;

cout << "The test scores enetered are: " << score1 << " " << score2 << " " << score3 << " " << score4 << endl;
sum = score1 + score2 + score3 + score4;


if (low > score1)
{
low = score1;

}
if(low > score2)
{
low = score2;

}
if(low > score3)
{
low = score3;

}
if(low > score4)
{
low = score4;

}

cout << "The lowest score of " << low << " is dropped." << endl;
average = (sum - low) / 3;

cout << "The average with the lowest score dropped is " << average << "." << endl;
return average; 
} // averageScores /

////////////////////////////////////////…
// adds to the appropriate count depeding on the score 
void tallyScores ( int average, int& repeatIt,int& wow, int& passing)
{

if(average <60)
repeatIt++;

else if(average >= 95)
wow++;

else if(60 <= average < 95)
passing++;

}
//////////////////////////////////////…
// Prints out a message for the student depending on the score
void printMessage (string name, int average) 
{
string message ;
if(average <60)
message = ("Gotta repeat it");

else if(average >= 95)
message = ("WOW");

else if(60 <= average < 95)
message = ("passing");

cout << "Average for " << name << " is " << average << " \t\t" << message; 

} //printMessage

Recommended Answers

All 10 Replies

Putting this in CODE tags would make this a lot easier to read...

how do you put it in code tags. I am new to this website.

Click Edit on your post, then highlight all of your code, and push the "CODE" button on the options above.

Here is the problem.

int low;  // You never set low equal to any value

cout << "Enter four interger scores with a space in between: " ;
cin >> score1 >> score2 >> score3 >> score4 ;

cout << "The test scores enetered are: " << score1 << " " << score2 << " " << score3 << " " << score4 << endl;
sum = score1 + score2 + score3 + score4;
low = score1; // set low equal to the first score
// now test the rest of them and change if needed.
if(low > score2)
  low = score2;
if(low > score3)
  low = score3;
if(low > score4)
  low = score4;

I can not seem to figure out how to drop the lowest score. When I run it it says the lowest score dropped was 0. How do I fix this?

#include<iostream>
#include <string>
#include <cmath>

using namespace std ;


string getName ();
int averageScores( int);
void printMessage (string, int);
void tallyScores ( int, int&,int&,int&);

int main()
{

const int NUMBER = 4; // number of scores for each student 
char moreStudents = 'y';
string who ; //name of the student
int testAverage ;

cout << "For each student, you will be prompted for a name and "<< NUMBER << " test scores\n";
while ( moreStudents =='y' || moreStudents == 'Y') 

{ 
who = getName () ;
testAverage = averageScores ( NUMBER);
printMessage ( who, testAverage ); 
cout << "\n\nMore students ? Y or N \t\t" ;
cin >> moreStudents ;
cout << endl;
cin.ignore (10, '\n');
} 

system ("pause");
return 0;
} // end main
////////////////////////////////////////…
// Prompts the user to input the student's name
string getName ()
{ 
string name ;

cout << "\nEnter student name " ;
getline ( cin, name);
return name ;
} 
////////////////////////////////////////…
// this function inputs and averages scores. Parameter howmany tells the 
// number of scores to be input.

int averageScores( int howmany )
{
int sum;
int score1, score2, score3, score4 ;
double decimalAverage;
int average ; // integer average 
int low;

cout << "Enter four interger scores with a space in between: " ;
cin >> score1 >> score2 >> score3 >> score4 ;

cout << "The test scores enetered are: " << score1 << " " << score2 << " " << score3 << " " << score4 << endl;
sum = score1 + score2 + score3 + score4;


if (low > score1)
{
low = score1;

}
if(low > score2)
{
low = score2;

}
if(low > score3)
{
low = score3;

}
if(low > score4)
{
low = score4;

}

cout << "The lowest score of " << low << " is dropped." << endl;
average = (sum - low) / 3;

cout << "The average with the lowest score dropped is " << average << "." << endl;
return average; 
} // averageScores /

////////////////////////////////////////…
// adds to the appropriate count depeding on the score 
void tallyScores ( int average, int& repeatIt,int& wow, int& passing)
{

if(average <60)
repeatIt++;

else if(average >= 95)
wow++;

else if(60 <= average < 95)
passing++;

}
//////////////////////////////////////…
// Prints out a message for the student depending on the score
void printMessage (string name, int average) 
{
string message ;
if(average <60)
message = ("Gotta repeat it");

else if(average >= 95)
message = ("WOW");

else if(60 <= average < 95)
message = ("passing");

cout << "Average for " << name << " is " << average << " \t\t" << message; 

} //printMessage

Do you get any run time errors ? I didn't go all over youre code but it seems that variable low hasn't been initialized.

I did not get any run time errors

Read my post up above, you are not initializing the int variable low.

Thanks for all your help. I got it to work.

#include<iostream>
 #include <string>
 #include <cmath>
 
 using namespace std ;
 
 
 string getName ();
 int averageScores( int);
 void printMessage (string, int);
 void tallyScores ( int, int&,int&,int&);
 
  int main()
   {
      
         const int NUMBER = 4;        // number of scores for each student 
         char moreStudents = 'y';
         string who ;                 //name of the student
         int testAverage  ;
        
         cout << "For each student, you will be prompted for a name and "<< NUMBER << " test scores\n";
         while ( moreStudents =='y' || moreStudents == 'Y') 
         
         {               
            who = getName () ;
            testAverage = averageScores ( NUMBER);
            printMessage ( who, testAverage );       
            cout << "\n\nMore students ? Y or N \t\t" ;
            cin >> moreStudents ;
            cout << endl;
            cin.ignore (10, '\n');
         }      
         
    cout << endl;
    cout << "Driver Name: Peter Langlands" << endl;
    cout << "Navigator Name: Tyler Bazan" << endl;
    cout << "Date: Febrauary 10, 2011" << endl;
    cout << "Lab CRN 26682\n" << endl;     
         
         system ("pause");
         return 0;
   }     // end main
   /////////////////////////////////////////////////////////////////////
   // Prompts the user to input the student's name
   string getName ()
   {      
          string name ;
          
          cout << "\nEnter student name " ;
          getline ( cin, name);
          return name ;
   }       
   /////////////////////////////////////////////////////////////////////////////////////////////////////////////
   // this function inputs and averages scores. Parameter howmany tells the 
   // number of scores to be input.
   
   int  averageScores( int howmany )
   {
          int sum;
          int score1, score2, score3, score4 ;
          double decimalAverage;
          int average ;      // integer average 
          int low;
   
               cout << "Enter four interger scores with a space in between: " ;
               cin >> score1 >> score2 >> score3 >> score4 ;
               
               cout << "The test scores enetered are: " << score1 << " " << score2 << " " << score3 << " " << score4 << endl;
               sum = score1 + score2 + score3 + score4;
               low = score1;
    
    if (low > score2)
	{
			low = score2;
		
	}
   if(low > score3)
	{
			low = score3;
			
	}
	if(low > score4)
	{
			low = score4;
			
	}
	

     cout << "The lowest score of " << low << " is dropped." << endl;
          average = (sum - low) / 3;

          cout << "The average with the lowest score dropped is " << average << "." << endl;
          return average;  
  } // averageScores  /
  
  //////////////////////////////////////////////////////////////////////
  // adds to the appropriate count depeding on the score  
  void tallyScores ( int average, int& repeatIt,int& wow, int& passing)
#include<iostream>
 #include <string>
 #include <cmath>
 
 using namespace std ;
 
 
 string getName ();
 int averageScores( int);
 void printMessage (string, int);
 void tallyScores ( int, int&,int&,int&);
 
  int main()
   {
      
         const int NUMBER = 4;        // number of scores for each student 
         char moreStudents = 'y';
         string who ;                 //name of the student
         int testAverage  ;
        
         cout << "For each student, you will be prompted for a name and "<< NUMBER << " test scores\n";
         while ( moreStudents =='y' || moreStudents == 'Y') 
         
         {               
            who = getName () ;
            testAverage = averageScores ( NUMBER);
            printMessage ( who, testAverage );       
            cout << "\n\nMore students ? Y or N \t\t" ;
            cin >> moreStudents ;
            cout << endl;
            cin.ignore (10, '\n');
         }      
         
    cout << endl;
    cout << "Driver Name: Peter Langlands" << endl;
    cout << "Navigator Name: Tyler Bazan" << endl;
    cout << "Date: Febrauary 10, 2011" << endl;
    cout << "Lab CRN 26682\n" << endl;     
         
         system ("pause");
         return 0;
   }     // end main
   /////////////////////////////////////////////////////////////////////
   // Prompts the user to input the student's name
   string getName ()
   {      
          string name ;
          
          cout << "\nEnter student name " ;
          getline ( cin, name);
          return name ;
   }       
   /////////////////////////////////////////////////////////////////////////////////////////////////////////////
   // this function inputs and averages scores. Parameter howmany tells the 
   // number of scores to be input.
   
   int  averageScores( int howmany )
   {
          int sum;
          int score1, score2, score3, score4 ;
          double decimalAverage;
          int average ;      // integer average 
          int low;
   
               cout << "Enter four interger scores with a space in between: " ;
               cin >> score1 >> score2 >> score3 >> score4 ;
               
               cout << "The test scores enetered are: " << score1 << " " << score2 << " " << score3 << " " << score4 << endl;
               sum = score1 + score2 + score3 + score4;
               low = score1;
    
    if (low > score2)
	{
			low = score2;
		
	}
   if(low > score3)
	{
			low = score3;
			
	}
	if(low > score4)
	{
			low = score4;
			
	}
	

     cout << "The lowest score of " << low << " is dropped." << endl;
          average = (sum - low) / 3;

          cout << "The average with the lowest score dropped is " << average << "." << endl;
          return average;  
  } // averageScores  /
  
  //////////////////////////////////////////////////////////////////////
  // adds to the appropriate count depeding on the score  
  void tallyScores ( int average, int& repeatIt,int& wow, int& passing)
  {
              				
    if(average <60)
       repeatIt++;
				
    else if(average >= 95)
       wow++;
       
    else if(60 <= average < 95)
       passing++;
    
}
/////////////////////////////////////////////////////
// Prints out a message for the student depending on the score
  void printMessage (string name, int average) 
  {
    string message ;
   	if(average <60)
        message = ("Gotta repeat it");
     
    else if(average >= 95)
		message = ("WOW");

    else if(60 <= average < 95)
        message = ("passing");
    				
    cout <<  "Average for  "  <<  name  << " is  " << average << " \t\t" << message; 
       
  }          //printMessage
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.