C/C++

Ошибки в коде. Почему не работает и как сделать чтобы заработало ?

Дали задание (скрин приложен), связанное с массивом и матрицей. Пробовал написать код (ниже), но он не хочет выводить массив B[ ]. Также не понимаю, как найти количество элементов массива, которые меньше максимального значения матрицы. Допустим:
if (B[i] < max X[i][j]) ...
count = count + 1;
cout >> "количество" >> count;
Но как это правильно оформить ? Подскажите, пожалуйста. Желательно в виде пары строк кода.

сам код:
#include<iostream>
#include<cstdlib>
#include<ctime>
#include<cmath>

using namespace std;

int main()
{
srand(time(0));
int n, m, count=0;
cout<<"n= "<<endl;
cin>>n; //количество строк
cout<<"m= "<<endl;
cin>>m; //количество столбцов
int X[n][m]; //создание матрицы по строкам и столбцам
int B[100]={};
for(int i=0;i<n;i++) //задаем массив рандомных элементов
{
for (int j=0;j<m;j++)
{
X[i][j]=1+rand()%10;

}
}
for(int i=0;i<n;i++) //выводим полученную матрицу
{
for (int j=0;j<m;j++)
{
cout<<" "<<X[i][j];

}
cout<<endl;
}
int max = X[0][0], // нахождение максимального значения матрицы
maxi = 0, maxj = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (X[i][j] > max)
{
max = X[i][j];
}
}
}
cout << endl;
cout << endl << "Максимальный элемент - " << max << endl;

for (int i = 0; i < n; i++)
{
B[i] = X[i][i] + X[n - 1 - i][n - 1 - i]; //где n - длина массива
}
cout <<" "<<B[i]<<endl; //выводим полученный массив
for (int i = 0; i < 100; i++)
{
if(B[i]<max)
{
count = count + 1;
}
}
cout << "количество элементов меньше макс знач " << count;
}
Я посмотрел программу. У тебя не в цикле вывод массива, а подсчёт количества идёт из 100 элементов массива. И зачем тебе матрица с разным количеством столбцов и строк? Тогда диагонали будут захватывать не все элементы. Поэтому не получается.
#include
#include
#include
#include

using namespace std;

int main()
{int i;
srand(time(0));
int n, count=0;
cout<<"n= ";
cin>>n; //количество строк и столбцов
int X[n][n]; //создание матрицы по строкам и столбцам
int B[n] ;
for(int i=0;i<n;i++) //задаем массив рандомных элементов
{
for (int j=0;j<n;j++)
{
X[i][j]=1+rand()%10;
}
}
for(int i=0;i<n;i++) //выводим полученную матрицу
{
for (int j=0;j<n;j++)
{
cout<<" "<<X[i][j];

}
cout<<endl;
}
int max = X[0][0], // нахождение максимального значения матрицы
maxi = 0, maxj = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (X[i][j] > max)
{
max = X[i][j];
}
}
}
cout << endl;
cout << "Максимальный элемент - " << max << endl;

for (int i = 0; i < n; i++)
{
B[i] = X[i][i] + X[n - 1 - i][n - 1 - i]; //где n - длина массива
cout <<" "<<B[i]<<endl; //выводим полученный массив
}
for (int i = 0; i < n; i++)
{
if(B[i]<max)
{
count = count + 1;
}
}
cout << "количество элементов меньше макс знач " << count;
}
Долгих Виталий
Долгих Виталий
2 065
Лучший ответ
Долгих Виталий Рабочая программа, только ты убери int i; в начале (машинально написал).
Долгих Виталий Если считать количество элементов меньше макс знач из 100 элементов массива, когда на самом деле их около 6, то остальные элементы, равные нулю, тоже посчитаются, и будет двухзначное число, ибо нули меньше максимума.
Андрей Пичуганов Огромное спасибо за разъеснение, стало намного понятней. Но разве программа выводит массив из суммы элементов диагоналей матрицы, как в задании? Я моём понимании она должна сложить первые элементы главной и побочной, чтобы получить элемент массива.
Интересно, только меня напрягает формулировка "попарная сумма элементов главной и побочной диагоналей"? Дайте пожалуйста определение пары к элементу массива в этом же массиве. Хочу понять современное мышление.