Я сам хвилини майже три вчітувався в умову, і строго не впевнений що зрозумів. Загалом може рішення може бути чімось на кшталт цього, дивись сам, я міг написати яку завгодно ахінею, це так, мов може якось так.
#include <stdio.h>
#include <algorithm>
#include <iostream>
#define INT_MIN (-2147483647+1)
#define INT_MAX 2147483647
class Mi_Clas_Analiz_Mas {
    int min_par;
    int max_nepar;
public:
    Mi_Clas_Analiz_Mas() : min_par(INT_MAX),max_nepar(INT_MIN)
    {}
    void operator()(int temp) {
        if (temp%2 == 0) { if (min_par > temp) min_par = temp; } //та мінімуму парних
        else { if (min_par < temp) max_nepar = temp; }
    }
    void pokazi()  { printf(" minimalne parne = %d   , maximalne neparne = %d\n" , min_par, max_nepar); }
    void dobutok() const { printf(" znajdenyj dobutok = %d\n", (max_nepar*min_par)); }
};
int main() {
    Mi_Clas_Analiz_Mas An_1;
    An_1 = forieach(my_masyv, my_masyv+sizeof(my_masyv)/sizeof(my_masyv[0]), An_1);
    An_1.pokazi();
    An_1.dobutok();
return 0;
}