Консультация № 189300
04.05.2016, 14:13
0.00 руб.
04.05.2016, 14:22
0 4 1
Здравствуйте! У меня возникли сложности с таким вопросом:

Задание:
Дана матрица целых чисел размера 5х9. Получить одномерный массив, состоящий из
средних арифметических элементов каждого из столбцов, имеющих четные номера. Найти
максимальный элемент одномерного массива.

Она не правильно считает, можете объяснить почему?

Программа:
[code h=200]#define n 5
#define m 9
int main()
{
setlocale(LC_ALL, "Russian");
float a[100];
int k = 0;
float buf = 0;
float sum = 0;
int arr[n][m];
for (int i = 0; i<n; i++)
{
for (int j = 0; j<m; j++)
{
arr[i][j] = -10 + rand() % 30;
cout << setw(4) << arr[i][j];
}
cout << endl << endl;
}

for (int j = 0; j<m; j++)
{
for (int i = 0; i<n; i++)
{
if ((i % 2 != 0) && (j % 2 != 0))
{
buf = buf + arr[i][j];
}
}
a[k] = buf / 5;
k++;
buf = 0;
}
cout << "Новый массив:" << endl;
float Max = a[0];
for (int i = 0; i < k; i++)
{
cout << setprecision(2) << a[i] << " | ";
if (a[i] > Max) Max = a[i];
}
cout << endl << "Максимальный элемент " << Max << endl;
cout << endl;
system("pause");
return 0;
}[/code]

Обсуждение

давно
Посетитель
7438
7205
04.05.2016, 14:30
общий
Адресаты:
Причина здесь:
Код:
			if ((i % 2 != 0) && (j % 2 != 0))

Надо:
Код:
			if (j % 2 != 0)

При условии, что столбцы считаются с единицы!
Т.е. нас интересуют индексы j=1,3,5,...
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
399158
228
04.05.2016, 15:22
общий
т.е. что мы в buf делаем:
{
buf = buf + arr[i][j];
}

тут?
давно
Посетитель
7438
7205
04.05.2016, 15:34
общий
Адресаты:
Что надо найти? Среднее арифметическое! А это сумма всех элементов, деленная на количество!
Теперь подумайте, что ж мы такое делаем?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
06.05.2016, 20:11
общий
это ответ
Здравствуйте, Посетитель - 399158!
Причина здесь:
Код:
			if ((i % 2 != 0) && (j % 2 != 0))

Надо:
Код:
			if (j % 2 != 0)

При условии, что столбцы считаются с единицы!
Т.е. нас интересуют индексы j=1,3,5,...
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа