C/C++

Задания на функции С++ Написать функцию, возвращающую:

1. Произведение элементов массива с нечетными номерами.
2. Минимальный четный элемент массива.
3. Номер первого элемента массива, равного заданному числу Х.
4. Среднее значение нечетных двузначных чисел.
5. Количество нулевых элементов массива.

1 номер я сделал, а вот с остальными беда. Помогите дописать программу
Вот сама программа:
#include
void program_1(void);
void input(int* x, int n);
void output(int* x, int n);
int maxim(int* x, int n);
void minim(int a, int b, int c);
int p(int* x, int n);
int min_ch(int* x, int n);
int main()
{
program_1();
}
void program_1(void)
{
int a[7], b[6], c[8]; //массивы
int ma, mb, mc; //их максимумы
int pa, pb, pc;
input(a, 7);
input(b, 6);
input(c, 8);
output(a, 7);
output(b, 6);
output(c, 8);
ma = maxim(a, 7); printf("ma = % d\n", ma);
mb = maxim(b, 6); printf("mb = % d\n", mb);
mc = maxim(c, 8); printf("mc = % d\n", mc);
minim(ma, mb, mc);
pa = p(a, 7); printf("pa=%d\n", pa);
pb = p(b, 6); printf("pb=%d\n", pb);
pc = p(c, 8); printf("pc=%d\n", pc);
ma = min_ch(a, 7); printf("ma=%d\n", ma);
mb = min_ch(b, 6); printf("mb=%d\n", mb);
mc = min_ch(c, 8); printf("mc=%d\n", mc);
}
void input(int* x, int n)
{
int i;
for (i = 0; i < n; i++)
{
x[i] = rand() % 10;
}
}
void output(int* x, int n)
{
int i;
for (i = 0; i < n; i++)
{
printf("%d\t", x[i]);
}
printf("\n");
}
int maxim(int* x, int n)
{
int i, max;
max = x[0];
for (i = 0; i < n; i++)
{
if (x[i] > max) max = x[i];
}
return max;
}
void minim(int a, int b, int c)
{
int min;
if ((a < b) && (a < c)) min = a;
if ((b < c) && (b < a)) min = b;
if ((c < a) && (c < b)) min = c;
printf("minimum = % d\n", min);
}
int p(int* x, int n) //Произведение элементов массива с нечетными номерами.
{
int i, m = 1;
for (i = 1; i < n; i = i + 2)
m = m * x[i];
return m;
}
int min_ch(int* x, int n)
{
int min, i;
min = 1000;
for (i = 0; i < n; i++);
if (x[i] < min and x[i] % 2 == 0);
min = x[i];
return min;
}
#include <iostream>
#include <cmath>
using namespace std;
double mult_odd_pos(int* box, size_t n) {
auto m = 1.;
for (auto i = 0U; i < n; i += 2U) m *= box[i];
return m;
}
int min_even(int* box, size_t n) {
auto min = numeric_limits<int>::max();
for (auto i = 0U; i < n; ++i) if (~box[i] & 1 && box[i] < min) min = box[i];
return min;
}
size_t pos_equals(int* box, size_t n, int x) {
auto i = 0U;
do if (box[i++] == x) return i; while (i < n);
return i;
}
double average_odd_dd(int* box, size_t n) {
auto sum = 0.;
auto count = 0U;
for (auto i = 0U; i < n; ++i) {
if (box[i] & 1) {
if (static_cast<int>(log10(abs(box[i]))) == 1) {
sum += box[i];
++count;
}
}
}
return count != 0? sum / count : 0.;
}
size_t zero_count(int* box, size_t n) {
auto count = 0U;
for (auto i = 0U; i < n; ++i) if (!box[i]) ++count;
return count;
}
int main() {
cout << "Size: ";
size_t n;
cin >> n;
auto box = new int[n];
cout << "Elements: ";
for (auto i = 0U; i < n; ++i) cin >> box[i];
auto mop = mult_odd_pos(box, n);
cout << "1: >>> " << mop << '\n';
auto me = min_even(box, n);
if (me != numeric_limits<int>::max()) cout << "2: >>> " << me << '\n';
cout << "x: ";
int x;
cin >> x;
auto pe = pos_equals(box, n, x);
if (pe != n) cout << "3: >>> " << pe << '\n';
auto aod = average_odd_dd(box, n);
if (aod) cout << "4: >>> " << aod << '\n';
auto zc = zero_count(box, n);
cout << "5: >>> " << zc << '\n';
delete[] box;
system("pause > nul");
}
Tengo Zibin
Tengo Zibin
91 881
Лучший ответ