При поиске суммы отрицательных нечетных элементов столбцов матрицы 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) // проход по нечетным строкам в столбце
        {....}
    }
→ Ссылка