C/C++

Помогите матрица С++

Надо найти среднее арифметическое побочной диагонали
Побочная диагональ -- это из левого нижнего угла в правый верхний.
В левом нижнем углу значение второго индекса максимально, первого минимально.
В правом верхнем углу значение первого индекса максимально, второго минимально.

Допустим, есть квадратная матрица A[n][n];
Создаём переменную типа float для суммы.
float moyen = 0.0;
И прогоняем матрицу через два цикла
for(int x = 0; x < n; x++)
{
for(int y = 0; y < n; y++)
{
if(x == n - y - 1)
{
moyen += A[x][y];
}
}
}
Среднее арифметическое получится при делении суммы на n -- размер квадратной матрицы
cout << moyen / const_cast<float>(n) << endl;

Если будут вопросы -- задавайте мне или другим участникам проекта.
Анатолий Петров
Анатолий Петров
9 833
Лучший ответ
Isgender Orazbayew а как оно вычисляет в if что это побочная диагональ?
Isgender Orazbayew спасибо
Матрица откуда берётся? Если не с потолка, а, например, с рандомно формируемой матрицей размера n×n, задаваемой в виде двумерного динамического массива, тогда можно так:

#include <ctime>
#include <cstdlib>
#include <iomanip>
#include <iostream>
using namespace std;
int main()
{
int l, m, n;
double s = 0;
cout << "\033[35mn: \033[31m";
cin >> n;
cout << endl;
int **A = new int *[n];
for (l = 0; l < n; l++)
A[l] = new int [n];
srand(time(nullptr));
for (l = 0; l < n; l++)
{
for (m = 0; m < n; m++)
{
A[l][m] = rand() % 100;
if (l + m == n - 1)
{
cout << "\033[31m";
s += A[l][m];
}
else cout << "\033[35m";
cout << setw(3) << A[l][m];
}
cout << endl;
}
cout << "\nSum = " << s << "\nAverage = "
<< s / n << endl;
for (l = 0; l < n; l++) delete [] A[l];
delete [] A;
cin.get();
cin.get();
return 0;
}Ещё вариант:

#include <iomanip>
#include <iostream>
using namespace std;
int main()
{
int k, l, m, n;
double s = 0;
cout << "n: ";
cin >> n;
k = n - 1;
cout << endl;
int **A = new int *[n];
for (l = 0; l < n; l++)
{
A[l] = new int [n];
for (m = 0; m < n; m++)
cin >> A[l][m];
}
cout << endl;
for (l = 0; l < n; l++)
{
for (m = 0; m < n; m++)
{
if (l + m == k) s += A[l][m];
cout << setw(5) << A[l][m];
}
cout << endl;
}
cout << "\nSum = " << s << "\nAverage = "
<< s / n << endl;
for (l = 0; l < n; l++) delete [] A[l];
delete [] A;
cin.get();
cin.get();
return 0;
}
Роксана Утова
Роксана Утова
66 572
Isgender Orazbayew мне надо на вводимую матрицу, но спасибо
Isgender Orazbayew только если можно без setw, пока не разобрался как он работает)
Isgender Orazbayew спасибо, извините что поздно заметил)
Ищите сами