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.
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));
You have a semicolon after your for
statement:
for (m = 0 ; m < size ; m++);
{
This should be:
for (m = 0 ; m < size ; m++)
{
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.
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.
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;
精彩评论