Click to See Complete Forum and Search --> : Traversing arrays problem


samaank
March 2nd, 2006, 04:36 AM
hi, i'm having problems getting my code to work, i'm very new to C++, what i want this code to do is to display the location of the largest value of the array.

#include <algorithm> // for min_element/max_element
#include <iostream> // for cout
using namespace std;
int main()
{
cout <<"witness the awesome power of the LARGEST VALUE IN ARRAY FINDER !!!\n\n";

int array[] = {5,6,3,230,3,4,6,110};
unsigned const num_elements=sizeof(array)/sizeof(int);
int largest = *max_element(array,array+num_elements);
int bigpos;
bigpos = array[&largest];
cout <<"It's position in the array is "<< bigpos<<"\n";
cout <<"Largest value in array: "<<largest;
cin.get();
cin.get();
return 0;
}

it should display 3 as the answer but it wont even compile.
can someone help me fix this problem ?

samaank
March 2nd, 2006, 04:36 AM
3 as bigpos

philkr
March 2nd, 2006, 04:49 AM
OK, I don't know about max_element() function, probably there is also an error, but I found two other:

const unsigned int num_elements = sizeof(array);
// ...
largest = array[bigpos];

SuperKoko
March 2nd, 2006, 04:49 AM
#include <algorithm> // for min_element/max_element
#include <iostream> // for cout
using namespace std;
int main()
{
cout <<"witness the awesome power of the LARGEST VALUE IN ARRAY FINDER !!!\n\n";

int array[] = {5,6,3,230,3,4,6,110};
unsigned const num_elements=sizeof(array)/sizeof(int);
int * plargest = max_element(array,array+num_elements);

cout <<"It's position in the array is "<< (plargest-array) <<"\n";
cout <<"Largest value in array: "<< *plargest;
cin.get();
cin.get();
return 0;
}


max_element yields a pointer/iterator to the largest element, not a pointer to a position of the largest element.
To get position, you simply need to compute the difference pointer_to_largest-array

samaank
March 2nd, 2006, 04:52 AM
it works !
thanks heaps KoKo

samaank
March 2nd, 2006, 05:32 AM
ok, one more question, how can i get a user to input a number, then the program to search for it's index in the array and print the index, and if the number does not exist it will say "number does not exist" ?

#include <algorithm> // for min_element/max_element
#include <iostream> // for cout
using namespace std;
int main()
{
int array[] = {1,12,32,45,56,89,122};
int ivalue;
cout << "please enter the value you are looking for\n";
cin >> ivalue;



cin.get();
cin.get();
return 0;
}