При поиске суммы отрицательных нечетных элементов столбцов матрицы 8 на 8 ,во время вывода не выводит корректно 1 значение
вывод 0 -14 0 -50 -35 0 -125 -219,
а должно быть -11 -14 0 -50 -35 0 -125 -219
#include <stdio.h>
#include <math.h>
int main()
{
int i=0,j=0,summ;
summ=0;
const int n=8;
int matrix[8][8]={{ 1, 12, 44,-50,-35, 6, -76, -80},
{ 1, 55, 76, 88, 96,-100,50, 58},
{ 10, 15, 23, 25, 62, 78, 85, -60},
{ 20, 25,-45, 13, 55, 60, 70, 80},
{ 113,-14,28, 30, 30, 35,-49, -79},
{ 29, 24,-25,-27,-13, 45, 99, 88},
{-11, 25, 98, 52, 33, 22, 5, 6},
{ 77, 65, 75, 57, 37, 86, 68, 76}};
for(i=0;i<n;i++)
{
summ=0;
for(j=0;j<=8/2;j+=2)
{
if(matrix[j][i]<0)
{
summ=summ+matrix[j][i];
}
}
printf("%d ",summ);
}
}
Ответы (1 шт):
Автор решения: DmitryK
→ Ссылка
Так ваш код и не делает того, что написано в условии.
Внешний цикл идет по столбцам - всё нормально. А внутренний вместо того, чтобы идти по нечетным элементам, проходит по четным, ещё и доходит только до середины столбца j<=8/2; - j изменяется от 0 до 4, и значения у него - 0, 2, 4.
for(i=0;i<n;i++) // перебор столбцов
{
summ=0;
for(j=0; j<=8/2; j+=2) // проход по четным строкам до половины столбца.
if(matrix[j][i]<0)
summ=summ+matrix[j][i];
printf("%d ",summ);
}
Должно быть как-то так:
for(i=0;i<n;i++) // перебор столбцов
{
for(j=1; j<n; j+=2) // проход по нечетным строкам в столбце
{....}
}