I'm trying to find the highest score from 6 scores taken from a text file. The code I have works, but it looks so inefficient. There should be a way to do it with a for loop,

``````for (int i = 0; i < count; i++)
if (max > score)
max = score;
``````

here is main and the big chunk of code to find the highest.

``````infile.open("posters.txt");

string name;
int score1;
int score2;
int score3;
int score4;
int score5;
int score6;
int max;

while(infile.peek() !=EOF)
{
infile >> name;
infile >> score1;
infile >> score2;
infile >> score3;
infile >> score4;
infile >> score5;
infile >> score6;

if(score1>=score2 && score1>=score3 && score1>=score4 && score1>=score5 && score1>=score6)
max =score1;
else if(score2>=score3 && score2>=score4 && score2>=score5 && score2>=score6)
max=score2;
else if(score3>=score4 && score3>=score5 && score3>=score6)
max=score3;
else if(score4>=score5 && score4>=score6)
max=score4;
else if(score5>=score6)
max=score5;
else
max=score6;
}
``````

## All 4 Replies

You can use a loop but you need to store your scores in an array

Yea, I know how to do that, and would make life easier, but we haven't "learned" that yet so I can't use that.

Well you can kinda unwind the loop and make it look like this

``````max = score1;
if(score2 > max)
max = score2;
if(score3 > max)
max = score2;
if(score4 > max)
max = score4;
if(score5 > max)
max = score5;
if(score6 > max)
max = score6;
``````

I'm not sure if it any more efficient than what you have but it seems to need fewer comparisons

This ^ I like!

Be a part of the DaniWeb community

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