Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
Solved

# Array problem

Posted on 2006-07-18
Medium Priority
451 Views
I am trying to write a function that displays the index of the highest value in the array

The teach gave us  main function and we are just supposed to write the function that finds the index for the highest number

here is the code

#include <iostream>
#include <iomanip>
using namespace std;

//====================================================================
// put your function prototype here
//====================================================================

double FindIndexHighest (double p[], int size);

int main()
{//DO NOT CHANGE ANYTHING IN THE MAIN()
double x[] = { 11.11, 66.66, 88.88, 33.33, 55.55 };
double y[] = { 9, 6, 5, 8, 3, 4, 7, 4, 6, 3, 8, 5, 7, 2 };
double z[] = { 123, 400, 765, 102, 345, 678, 234, 789 };

cout << fixed <<showpoint << setprecision(2);

int index = FindIndexHighest (x, sizeof (x) / sizeof (x[0]));
cout << "Array x:  element index = " << index
<< "  element contents = " << x[index] << '\n';
index = FindIndexHighest (y, sizeof (y) / sizeof (y[0]));
cout << "Array y:  element index = " << index
<< "  element contents = " << y[index] << '\n';
/*cout << "Array z:  element index = "
<< FindIndexHighest (z, sizeof (z) / sizeof (z[0]))
<< "  element contents = "
<< z[FindIndexHighest (z, sizeof (z) / sizeof (z[0])) ] << '\n';*/
return 0;
}

//====================================================================
// put your function definition here.
//====================================================================

double FindIndexHighest (double p[], int size){
double highest = 0;
int index;
for(double i=0; i<size; i++){
if (p[i]>highest){
highest = p[i];
index = i;
}
}
return index;
}

when I try to run this I get the erro message
error C2108: subscript is not of integral type
in referance to my if statement in my occurances function definition.
i think the program show work otherwise but I have no idea what this error message means.
0
Question by:vlahomt
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 2
• 2
• 2

Author Comment

ID: 17133818
I commented out the array z section of main because I was getting the same erro message there when my code was not correct now that I think my function should work i just need know what that error message means so i can fix the problem which should probally fix the problem in the array z cout statments.
0

LVL 14

Expert Comment

ID: 17134053
for(double i=0; i<size; i++){
if (p[i]>highest){   <---------here is your problem
highest = p[i];
index = i;

array indices must be ints, you declared i as a double:

for(int i=0; i<size; i++){   <----- change to int
if (p[i]>highest){
highest = p[i];
index = i;

etc.
0

LVL 14

Expert Comment

ID: 17134076
The reason is, a double as an index makes no sense. What would

p[1.543276]

mean, if it could be a double?

So the compiler helpfully flags the error for you.

0

Author Comment

ID: 17134263
that fixes the function but I get the same error message if I un comment the cout statement reffering to the array z
0

LVL 15

Accepted Solution

efn earned 1200 total points
ID: 17134340
The reason is the same.  FindIndexHighest returns a double and the output statement uses it as a subscript.
0

LVL 15

Expert Comment

ID: 17135346
Thanks, but with all due respect, I think wayside deserves most or all of the points here.  If you would like to change your decision, you can post a request in the Community Support topic area to get a moderator to undo your acceptance.
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

What is C++ STL?: STL stands for Standard Template Library and is a part of standard C++ libraries. It contains many useful data structures (containers) and algorithms, which can spare you a lot of the time. Today we will look at the STL Vector. …
Basic understanding on "OO- Object Orientation" is needed for designing a logical solution to solve a problem. Basic OOAD is a prerequisite for a coder to ensure that they follow the basic design of OO. This would help developers to understand the b…
The viewer will learn how to pass data into a function in C++. This is one step further in using functions. Instead of only printing text onto the console, the function will be able to perform calculations with argumentents given by the user.
The viewer will learn how to user default arguments when defining functions. This method of defining functions will be contrasted with the non-default-argument of defining functions.
###### Suggested Courses
Course of the Month7 days, 21 hours left to enroll