• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 459
  • Last Modified:

Array problem

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
vlahomt
Asked:
vlahomt
  • 2
  • 2
  • 2
1 Solution
 
vlahomtAuthor Commented:
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
 
waysideCommented:
   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
 
waysideCommented:
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
Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

 
vlahomtAuthor Commented:
that fixes the function but I get the same error message if I un comment the cout statement reffering to the array z
0
 
efnCommented:
The reason is the same.  FindIndexHighest returns a double and the output statement uses it as a subscript.
0
 
efnCommented:
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

Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

  • 2
  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now