classISover
classISover

Reputation: 459

Finding max value in an array

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

Answers (5)

Ashutosh Narang
Ashutosh Narang

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

Jerry Coffin
Jerry Coffin

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

B. D
B. D

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

Luke
Luke

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

kennytm
kennytm

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

Related Questions