Velocity Reviews > C++ > How to find number of times certain conditions happened in an array?

# How to find number of times certain conditions happened in an array?

lightaiyee@gmail.com
Guest
Posts: n/a

 11-26-2007
Dear Gurus,

I would like to implement a function that computes the number of times
a certain condition is met in a global array.

For example, I have an global array of size 500.
float array[500];

I have a function that finds the maximum of an array of size 50.
bool findMax50(float input[])

Next, I want to implement a function that can do the following;

Sum( findMax50(array), period)
If period is 20, then this function will start at the last element of
the global array and will return 1 if this element is a maximum among
the 50 elements it covers. Then, it moves on to the (last -1)th
element all the way to (last-20)th element. The Sum() function will
sum up the number of times maximum happened.

My greatest difficulty lies in how one can input a function as a
parameter into another function.

Can some Guru advise?

ayesha.noida@gmail.com
Guest
Posts: n/a

 11-26-2007
On Nov 26, 6:18 am, (E-Mail Removed) wrote:
> Dear Gurus,
>
> I would like to implement a function that computes the number of times
> a certain condition is met in a global array.
>
> For example, I have an global array of size 500.
> float array[500];
>
> I have a function that finds the maximum of an array of size 50.
> bool findMax50(float input[])
>
> Next, I want to implement a function that can do the following;
>
> Sum( findMax50(array), period)
> If period is 20, then this function will start at the last element of
> the global array and will return 1 if this element is a maximum among
> the 50 elements it covers. Then, it moves on to the (last -1)th
> element all the way to (last-20)th element. The Sum() function will
> sum up the number of times maximum happened.
>
> My greatest difficulty lies in how one can input a function as a
> parameter into another function.
>
> Can some Guru advise?

hi

Jim Langston
Guest
Posts: n/a

 11-26-2007
<(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> Dear Gurus,
>
> I would like to implement a function that computes the number of times
> a certain condition is met in a global array.
>
> For example, I have an global array of size 500.
> float array[500];
>
> I have a function that finds the maximum of an array of size 50.
> bool findMax50(float input[])
>
> Next, I want to implement a function that can do the following;
>
> Sum( findMax50(array), period)
> If period is 20, then this function will start at the last element of
> the global array and will return 1 if this element is a maximum among
> the 50 elements it covers. Then, it moves on to the (last -1)th
> element all the way to (last-20)th element. The Sum() function will
> sum up the number of times maximum happened.
>
> My greatest difficulty lies in how one can input a function as a
> parameter into another function.
>
> Can some Guru advise?

What you are trying to do is not clear.

First off, you have findMax50 returning a bool, a true or false. That can't
express the max of an array.

Socond your Sum( findMax50(array), period), what is it supposed to return?

What is it you want at the end? It sounds like you may want to return a
std::vector from findMax50 which will have the largest 50 values from the
array. but what is Sum supposed to do? Is it output only? Is it supposed
to return a value?

I'm fairly sure what you are trying to achieve is doable, but I can't get a
grasp on what you are trying to accomplish.

Daniel T.
Guest
Posts: n/a

 11-26-2007
http://www.velocityreviews.com/forums/(E-Mail Removed) wrote:

> I would like to implement a function that computes the number of times
> a certain condition is met in a global array.
>
> For example, I have an global array of size 500.
> float array[500];
>
> I have a function that finds the maximum of an array of size 50.
> bool findMax50(float input[])
>
> Next, I want to implement a function that can do the following;
>
> Sum( findMax50(array), period)
> If period is 20, then this function will start at the last element of
> the global array and will return 1 if this element is a maximum among
> the 50 elements it covers. Then, it moves on to the (last -1)th
> element all the way to (last-20)th element. The Sum() function will
> sum up the number of times maximum happened.
>
> My greatest difficulty lies in how one can input a function as a
> parameter into another function.
>
> Can some Guru advise?

I would do it with a template:

template < typename Fn >
void Sum( Fn f, int period )
{

}

You could create a function pointer variable, but the above is easier.

terminator
Guest
Posts: n/a

 11-26-2007
On Nov 26, 1:18 pm, (E-Mail Removed) wrote:
> Dear Gurus,
>
> I would like to implement a function that computes the number of times
> a certain condition is met in a global array.
>
> For example, I have an global array of size 500.
> float array[500];
>
> I have a function that finds the maximum of an array of size 50.
> bool findMax50(float input[])
>
> Next, I want to implement a function that can do the following;
>
> Sum( findMax50(array), period)
> If period is 20, then this function will start at the last element of
> the global array and will return 1 if this element is a maximum among
> the 50 elements it covers. Then, it moves on to the (last -1)th
> element all the way to (last-20)th element. The Sum() function will
> sum up the number of times maximum happened.
>
> My greatest difficulty lies in how one can input a function as a
> parameter into another function.
>

though as usual I cant make heads or tials of a post the answer to
your qustion:
> Can some Guru advise?

Is:

You can use a function pointer:

typedef ret_type (*funcptr)(param_types);
ret_type foo(param_types);
funcptr fptr=&foo;

alternatively you can use functioniods:

class my_functioniod_base{
public:
virtual ~my_functioniod_base()=0;
ret_type operator()(param_types) const =0;
};

struct Tfoo:
public my_functioniod_base
{
ret_type operator()(param_typs) const{/*define it here.*/};
};

Tfoo foo;

my_functioniod_base & fref=foo;
fref(params);//runs Tfoo:perator().

you can do a little template work too:

template<typename pred>
void run(pred p){
p();
};

void f();

run(&f);

have a look at the standard <algorithm> and <functional> headers too;
interesting tools you can find there.

yours,
FM.

 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 OffTrackbacks are On Pingbacks are On Refbacks are Off Forum Rules

 Similar Threads Thread Thread Starter Forum Replies Last Post Edward A. Falk C Programming 1 04-04-2013 08:07 PM Simon ASP .Net 1 06-11-2007 12:48 PM Simon ASP .Net Web Controls 1 06-11-2007 12:48 PM PJ6 ASP .Net 8 10-25-2005 12:29 AM blnukem Perl Misc 9 04-30-2004 06:55 AM

Advertisments