Определить количество элементов массива, которые меньше среднего арифметического значения всех элементов своей строки
Дан вещественный массив А[N][М].
- Выводит неверное число элементов.
- Не смог написать это число для каждой строки массива.
#include<iostream>
#include<ctime>
using namespace std;
int main()
{
setlocale(0, "");
srand(unsigned(time(NULL)));
int N, M, j, i;
cout << "Введите размер матрицы: ";
cin >> N >> M; // N - строка M - столб
int** A = new int* [N];
for (int i = 0; i < N; i++)
{
A[i] = new int[M];
}
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
cin >> A[i][j];
}
}
cout << " " << endl;
cout << "Ваша матрица:" << endl << endl;
cout << " " << endl;
for (int i = 0; i < N; i++)
{
for(int j = 0; j < M; j++)
cout << A[i][j] << " ";
cout << endl;
}
int *sum = new int[M];
int hel = 0;
for (int i = 0; i < M; i++)
{
sum[i] = 0;
for (int j = 0; j < N; j++)
{
sum[i] = sum[i] + A[i][j];
}
sum[i] = sum[i] / N;
for (int j = 0; j < N; j++)
{
if (sum[j] < sum[i])
{
hel++;
}
}
}
cout << "Количество элементов массива меньше ср. арифметического: " << hel << endl;
cout << endl;
for (int i = 0; i < N; i++)
{
delete[] A[i];
}
delete [] A;
system("pause > void");
return 0;
}
Ответы (3 шт):
Автор решения: Aziz Umarov
→ Ссылка
Исправьте,
sum[i] = sum[i] / N;
for (int j = 0; j < N; j++)
{
if (А[i][j] < sum[i])
{
hel++;
}
}
Вы сравнивание средние, а по заданию вы должны были сравнить элементы строки
Автор решения: MBo
→ Ссылка
Не нужно путать строки и столбцы. И sum ни к чему делать массивом, если оно больше не понадобится
int sum;
int hel = 0;
for (int i = 0; i < N; i++)
{
sum = 0;
for (int j = 0; j < M; j++)
sum += A[i][j];
for (int j = 0; j < M; j++)
if (A[i][j] * M < sum)
hel++;
}
Автор решения: Harry
→ Ссылка
Я бы искал это число так:
int *sum = new int[N];
for(int i = 0; i < N; ++i)
{
sum[i] = 0;
for(int j = 0; j < M; ++j) sum[i] += A[i][j]; // сумма
int less = 0;
for(int j = 0; j < M; ++j)
if (A[i][j] * M < sum[i]) ++less; // количество чисел, меньше среднего
sum[i] = less;
}
Вот тут - https://ideone.com/BXQ3N1 - полный новый код, с выводом сразу при выводе матрицы (я только, чтоб не возиться, заполнял ее случайными числами).