Консультация № 189340
11.05.2016, 14:08
0.00 руб.
0 2 1
Здравствуйте! Прошу помощи в следующем вопросе:
Задание:
Напишите универсальную функцию для нахождения среднего гео-
метрического отрицательных элементов матриц с произвольным числом строк и
столбцов. Напишите программу-тест с промежуточной конструкцией, позволяющей
передавать в функцию двумерные массивы.

Программа:
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cstdio>
#include <cmath>

using namespace std;

double meang(double **a, int n, int m)
{
double p = 1.;
int c = 0;
for (int i = 0; i < n; ++i)
for (int j = 0; j < m; ++j)
if (a[i][j] < 0) p *= a[i][j], ++c;
if (p < 0) p = -pow(fabs(p), 1. / c);
else p = pow(p, 1. / c);
return p;
}

int main()
{
srand(time(0));
int n = 2, m = 3;
double **a = new double *[n];

double x[2][3] = { -1, -2, 3, -4, 5, 6 };
for (int i = 0; i < n; ++i)
a[i] = new double[m];
for (int i = 0; i < n; ++i) a[i] = x[i];
cout << meang(a, n, m) << endl;
system("pause");
return 0;
}

можете объяснить, что мы делаем в этой ф-ции: meang и для чего нам **a, что это значит?

Обсуждение

давно
Посетитель
7438
7205
11.05.2016, 14:34
общий
Адресаты:
В функции meang мы сначала ищем произведение всех отрицательных элементов, одновременно считаем их количество
затем находим корень степени, равной количеству элементов (среднее геометрическое !!!)
При этом заменяем корень из отрицательного числа на корень из модуля числа, результат умножаем на -1.
**a - это адрес нашей матрицы, представленный, как адрес адреса, адрес массива элементов (строк), каждым элементом которого являются адреса массивов (столбцов).
Наша матрица представлена как одномерный массив строк, каждым элементом которого являются одномерные массивы столбцов
Пора бы уже начинать понимать такие элементарные вещи, Вам не кажется?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
14.05.2016, 10:38
общий
это ответ
Здравствуйте, Посетитель - 399158!
В функции meang мы сначала ищем произведение всех отрицательных элементов, одновременно считаем их количество
затем находим корень степени, равной количеству элементов. Что и является средним геометрическим.
При этом заменяем корень нечетной степени из отрицательного числа на корень из модуля числа, результат умножаем на -1.

**a - это адрес нашей матрицы, представленный, как адрес адреса, адрес массива элементов (строк), каждым элементом которого являются адреса массивов (столбцов).
Другими словами, наша матрица представлена как одномерный массив строк, каждым элементом которого являются адреса одномерных массивов столбцов.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа