Reputation: 459
If I have an array, e.g.
10, 4, 7, 8
The value of the maximum element is
10
How can I find this value?
Here's my attempt:
int highNum = 0;
int m;
int list[4] = {10, 4, 7, 8};
for (m = 0 ; m < size ; m++);
{
if (list[m] > highNum)
highNum = list[m];
cout << list[m];
}
cout << highNum;
I am trying to write a simple loop to store a max value from an array, and I wrote this thinking it would work, but for some reason at the beginning of the for loop it stores the m variable as 4 and exits the loop.
Upvotes: 6
Views: 60795
Reputation: 425
There is a ;
right after the closing parentheses of your for loop:
for (m = 0 ; m < size ; m++);
The statements inside the block (inside the curly braces) gets executed only after the loop do nothing for size number of times and that too only once.
You have also missed a pair of { ... }
for the if statement as well.
Upvotes: 1
Reputation: 490128
Unless you're doing this for homework and have to write the loop, just use std::max_element
, as in:
int list[4] = {10, 4, 7, 8};
std::cout << *std::max_element(list, list+4);
...or better, avoid hard-coding the length:
int list[] = {10, 4, 7, 8};
std::cout << *std::max_element(std::begin(list), std::end(list));
Upvotes: 29
Reputation: 7798
You put a superfluous at the end ;
in :
for (m = 0 ; m < size ; m++);
Edit : Working code with some additional << endl;
int size = 4;
int highNum = 0;
int m;
int list[4] = {10, 4, 7, 8};
for (m = 0 ; m < size ; m++)
{
if (list[m] > highNum)
highNum = list[m];
cout << list[m] << endl;
}
cout << highNum << endl;
Upvotes: 0
Reputation: 7210
You have a semicolon after your for
statement:
for (m = 0 ; m < size ; m++);
{
This should be:
for (m = 0 ; m < size ; m++)
{
Upvotes: 4
Reputation: 523294
int highNum = 0;
int m;
int list[4] = {10, 4, 7, 8};
for (m = 0 ; m < size ; m++); // <-- semicolon?
{
if (list[m] > highNum)
highNum = list[m];
cout << list[m];
}
cout << highNum;
Looking at your indentation, you may have missed a pair of {
... }
for the if
statement as well.
Upvotes: 4