Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C Programming > max value in an array

Reply
Thread Tools

max value in an array

 
 
Mike Wahler
Guest
Posts: n/a
 
      02-13-2004

"fdunne2" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed) lkaboutprogramming.com...
> Hi,
>
> Is there a function in C that returns the max value in an array?


No there is not, but it should be trivial to write one.


> I need a function that returns the max value and the corresponding array

index.

Just create a temp variable, set it to the value of element zero,
traverse the array, setting the temp to each value if it's greater.
Track the index the same way, with a temp variable.

>
> Also, when reading float values from a binary file how do you know when

you've reached the end of the file?

It doesn't matter how you're interpreting the data, in any case,
most of the i/o functions return EOF upon an a attempt to read past
end of file.

-Mike


 
Reply With Quote
 
 
 
 
fdunne2
Guest
Posts: n/a
 
      02-13-2004
Hi,

Is there a function in C that returns the max value in an array? I need a function that returns the max value and the corresponding array index.

Also, when reading float values from a binary file how do you know when you've reached the end of the file?

Regards,
Fergal.

 
Reply With Quote
 
 
 
 
Thomas Matthews
Guest
Posts: n/a
 
      02-13-2004
fdunne2 wrote:
> Hi,
>
> Is there a function in C that returns the max value in an array? I need a function that returns the max value and the corresponding array index.


No, but it is trivial to write one.

int max_value(VALUE_TYPE * p_array,
unsigned int values_in_array,
VALUE_TYPE * p_max_value)
{
int position;

position = 0;
*p_max_value = p_array[position];
for (position = 1; position < values_in_array; ++position)
{
if (p_array[position] > *p_max_value)
{
*p_max_value = p_array[position];
break;
}
}
return position;
}

Since you didn't specify the type of the array,
I used VALUE_TYPE. If the array is of float,
then VALUE_TYPE will be float.

This could be simplified by returning the position or
index of the maximum value. The maximum value can then
be retreived from the array using the position:
maximum_value = array[position];

Besure to check the C FAQ section about arrays:
http://www.eskimo.com/~scs/c-faq/s6.html


> Also, when reading float values from a binary file how do you know when you've reached the end of the file?
>
> Regards,
> Fergal.
>


As far as detecting end of file, check the C language FAQ:
http://www.eskimo.com/~scs/c-faq/s12.html

A very good idea is to always check the FAQ first, and
search the newsgroups before posting.

--
Thomas Matthews

C++ newsgroup welcome message:
http://www.slack.net/~shiva/welcome.txt
C++ Faq: http://www.parashift.com/c++-faq-lite
C Faq: http://www.eskimo.com/~scs/c-faq/top.html
alt.comp.lang.learn.c-c++ faq:
http://www.raos.demon.uk/acllc-c++/faq.html
Other sites:
http://www.josuttis.com -- C++ STL Library book

 
Reply With Quote
 
Kurt Watzka
Guest
Posts: n/a
 
      02-13-2004
Mike Wahler wrote:

>
> "fdunne2" <(E-Mail Removed)> wrote in message
>

news:(E-Mail Removed) lkaboutprogramming.com...
>> Hi,
>>
>> Is there a function in C that returns the max value in an array?

>
> No there is not, but it should be trivial to write one.
>
>
>> I need a function that returns the max value and the corresponding array

> index.
>
> Just create a temp variable, set it to the value of element zero,
> traverse the array, setting the temp to each value if it's greater.
> Track the index the same way, with a temp variable.


This will probably not find the maximum value of { -7, -3, -1, -10 }.
Better start with the value of the first element.

>
>>
>> Also, when reading float values from a binary file how do you know when

> you've reached the end of the file?
>
> It doesn't matter how you're interpreting the data, in any case,
> most of the i/o functions return EOF upon an a attempt to read past
> end of file.


OBC: Or in case of an I/O error. After fread(), fscanf(), fgetc() or
similar functions return EOF, feof() and ferror() are handy tools
to determine the reason for the failure to read another item/token/byte.

Kurt Watzka

 
Reply With Quote
 
Clark Cox
Guest
Posts: n/a
 
      02-13-2004
In article <c0jbkg$fu$04$(E-Mail Removed)-online.com>,
Kurt Watzka <(E-Mail Removed)-muenchen.de> wrote:

> Mike Wahler wrote:
>
> >
> > "fdunne2" <(E-Mail Removed)> wrote in message
> >

> news:(E-Mail Removed) lkaboutprogramming.com...
> >> Hi,
> >>
> >> Is there a function in C that returns the max value in an array?

> >
> > No there is not, but it should be trivial to write one.
> >
> >
> >> I need a function that returns the max value and the corresponding array

> > index.
> >
> > Just create a temp variable, set it to the value of element zero,
> > traverse the array, setting the temp to each value if it's greater.
> > Track the index the same way, with a temp variable.

>
> This will probably not find the maximum value of { -7, -3, -1, -10 }.


Why not?

 
Reply With Quote
 
Jeremy Yallop
Guest
Posts: n/a
 
      02-13-2004
Thomas Matthews wrote:
> fdunne2 wrote:
>> Hi,
>>
>> Is there a function in C that returns the max value in an array? I
>> need a function that returns the max value and the corresponding
>> array index.

>
> No, but it is trivial to write one.


Perhaps not /that/ trivial .

> int max_value(VALUE_TYPE * p_array,
> unsigned int values_in_array,
> VALUE_TYPE * p_max_value)
> {
> int position;
>
> position = 0;
> *p_max_value = p_array[position];
> for (position = 1; position < values_in_array; ++position)
> {
> if (p_array[position] > *p_max_value)
> {
> *p_max_value = p_array[position];
> break;
> }
> }
> return position;
> }


This function returns the position of the first value in the array
that's greater than the first value in the array. Here's a version
that returns a pointer to the maximum element:

T *maxelem(const T *array, size_t size) {
const T *pos = array, *end = array + size;
for (; array != end; array++) {
if (*array > *pos) {
pos = array;
}
}
return (T *)pos;
}

Jeremy.
 
Reply With Quote
 
pete
Guest
Posts: n/a
 
      02-13-2004
Kurt Watzka wrote:
>
> Mike Wahler wrote:


> > Just create a temp variable, set it to the value of element zero,


> Better start with the value of the first element.


Element zero, is the first element.
array[0]

--
pete
 
Reply With Quote
 
Joe Wright
Guest
Posts: n/a
 
      02-14-2004
fdunne2 wrote:
>
> Hi,
>
> Is there a function in C that returns the max value in an array? I need a function that returns the max value and the corresponding array index.
>

#include <stdio.h>
int main(void) {
int iarr[] = { -7, -3, -1, -10 };
int siz = sizeof iarr / sizeof iarr[0];
int m, i, x = 0;
m = iarr[0];
for (i = 1; i < siz; ++i)
if (iarr[i] > m) {
m = iarr[i];
x = i;
}
printf("The greatest of %d values is %d at index %d\n", siz, m, x);
return 0;
}

> Also, when reading float values from a binary file how do you know when you've reached the end of the file?


Assuming you are reading them one at a time, your fread() will return 0
instead of 1.
>
> Regards,
> Fergal.


--
Joe Wright http://www.jw-wright.com
"Everything should be made as simple as possible, but not simpler."
--- Albert Einstein ---
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
want max width and max height as long as not exceed 100px Summercool HTML 9 10-23-2007 02:27 AM
ADSL Max/Max Gordy NZ Computing 6 11-24-2006 11:41 PM
Textarea max rows and max characters per row Greg Ferris Javascript 2 01-16-2004 07:21 PM
Max Apperture and Max. Shutter Speed Confusion-HELP bhaskar Digital Photography 12 07-22-2003 05:17 PM



Advertisments