Некорректно работает подсчет среднего значения в матрице
В общем есть такая задача: Вычислить средние арифметические значения неотрицательных элементов каждой строки матрицы [N;M]. Я написал код и сначала подумал что он считает все правильно, но как оказалось, это не так. Среднее значение выходить не правильным. Я пробовал как и с рандомными значениями так и со значениями, которые пользователь вводить с помощью клавиатуры. Скорее всего я что-то проморгал и не могу найти. Заранее спасибо.
Вот код:
srand(time(0));
const int row = 3;
const int col = 4;
int m[row][col];
int k = 0;
float s = 0;
float av;
for ( int i = 0; i < row; i++ )
{
for ( int j = 0; j < col; j++ )
{
cin >> m[i][j]; //= rand() % 10 - 1;
}
}
cout << endl;
for ( int i = 0; i < row; i++ )
{
for ( int j = 0; j < col; j++ )
{
cout << m[i][j] << "\t";
}
cout << endl;
}
for ( int i = 0; i < row; i++ )
{
for ( int j = 0; j < col; j++ )
{
if ( m[i][j] >= 0 )
{
s += m[i][j];
k++;
}
}
av = s / k;
cout << endl;
cout << av << " ";
}
cout << endl;
}
Ответы (1 шт):
Автор решения: Igor
→ Ссылка
for ( int i = 0; i < row; i++ )
{
s = 0.0;
av = 0.0;
k = 0;
for ( int j = 0; j < col; j++ )
{
if ( m[i][j] >= 0 )
{
s += m[i][j];
k++;
}
}
if (k > 0)
av = s / k;
cout << endl;
cout << av << " ";
}