Консультация № 161309
24.02.2009, 18:22
0.00 руб.
0 3 3
Здравствуйте, еше раз уважаемые эксперты!!!!!!!!! Помогите пожалуйста решить еще одну задачку:
Даны две матрицы X(3;4) Y(4;2).Найти среднее арифметическое всех элементов в каждой матрице.

Обсуждение

Неизвестный
24.02.2009, 19:52
общий
это ответ
Здравствуйте, dmi_5116!
Непосредственно фрагмент кода приведен в приложении. Поскольку ничего не сказано о типе элементов матриц, спсобе ввода, вывода результата и т.д., предположим, что элементы вещественного типа, а матрицы заполнены (значения элементов уже присвоены). Полный код должен содержать объявления и инициализацию самих матриц и т.д.


Приложение:
int i,k; // служебные переменные
float xS=0.0, yS=0.0; // переменные для промежуточного хранения суммы элементов, а затем вычисления среднего

//////////////////////////

for(i=0;i<3;i++) // для каждой строки
for(k=0;k<4;k++) // для каждого столбца
xS += X[i][k]; // добавляем элемент к сумме
xS = xS / (3*4); // делим полученную сумму на число элементов - получаем среднее арифметическое

for(i=0;i<4;i++)
for(k=0;k<2;k++)
yS += Y[i][k];
yS = yS / (4*2);

///////////////////////////
Неизвестный
24.02.2009, 21:02
общий
это ответ
Здравствуйте, dmi_5116!
Программа. C++.
Код:

#include <locale>
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>

using namespace std;

// Заполняет матрицу случайными значениями и ваводит на экран
void initializeMatrix(const wchar_t* const msg,double* matrix,unsigned int dim1,unsigned int dim2)
{
wcout<<msg<<endl;
for(unsigned int i=0;i<dim1;i++)
{
for(unsigned int j=0;j<dim2;j++)
{
wcout<<setw(7)<<setprecision(5)<<(*matrix++=(double)rand()/RAND_MAX*50)<<L' ';
}
wcout<<endl;
}
}

// Считает среднее матрицы
double average(double* matrix,unsigned int dim1,unsigned int dim2)
{
double *end=matrix+dim1*dim2;
double sum=0;
while(matrix!=end)
sum+=*matrix++;
return sum/dim1/dim2;
}

int main()
{
// Инициализация генератора случайных чисел
srand((unsigned int)time(0));
locale::global(locale("rus_rus.866"));
// Размерности матриц
const int dimX1=3,
dimX2=4;
const int dimY1=4,
dimY2=2;
// Матрицы
double X[dimX1][dimX2],Y[dimY1][dimY2];
// Заполняем их
initializeMatrix(L"Матрица X:",&X[0][0],dimX1,dimX2);
initializeMatrix(L"Матрица Y:",&Y[0][0],dimY1,dimY2);
// Результат
wcout<<L"Среднее арифметическое элементов матрицы X:"<<average(&X[0][0],dimX1,dimX2)<<endl;
wcout<<L"Среднее арифметическое элементов матрицы Y:"<<average(&Y[0][0],dimY1,dimY2)<<endl;
system("PAUSE");
return 0;
}

Пример работы:
Код:

Матрица X:
39.18 42.213 0.5829 37.188
24.821 46.806 19.527 30.328
1.0483 34.486 7.5014 13.08
Матрица Y:
13.648 11.47
40.107 0.84841
14.782 1.178
32.373 17.71
Среднее арифметическое элементов матрицы X:24.73
Среднее арифметическое элементов матрицы Y:16.515
Неизвестный
25.02.2009, 01:29
общий
это ответ
Здравствуйте, dmi_5116!

Так можно посчитать среднее арифметическое всех элементов матрицы.

float srednee;
int Sum;

for(int i=0;i<3;i++)
for(int j=0;j<4;j++)
{
Sum+=X[i][j];
}

srednee=Sum/(3*4);
Форма ответа