Solved

Array problem

Posted on 2006-07-18
6
392 Views
Last Modified: 2008-02-01
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
Comment
Question by:vlahomt
  • 2
  • 2
  • 2
6 Comments
 

Author Comment

by:vlahomt
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

by:wayside
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

by:wayside
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
Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

 

Author Comment

by:vlahomt
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

by:
efn earned 300 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

by:efn
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

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Errors will happen. It is a fact of life for the programmer. How and when errors are detected have a great impact on quality and cost of a product. It is better to detect errors at compile time, when possible and practical. Errors that make their wa…
In days of old, returning something by value from a function in C++ was necessarily avoided because it would, invariably, involve one or even two copies of the object being created and potentially costly calls to a copy-constructor and destructor. A…
The goal of the tutorial is to teach the user how to use functions in C++. The video will cover how to define functions, how to call functions and how to create functions prototypes. Microsoft Visual C++ 2010 Express will be used as a text editor an…
The viewer will learn how to use the return statement in functions in C++. The video will also teach the user how to pass data to a function and have the function return data back for further processing.

759 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now