Работа с элементами диагоналей квадратной матрицы

Vadster

Матрица квадратная, массив нужно выделить динамически. . Найти наименьшую из сумм диагоналей , параллельных главной (полагаю, при этом главная не участвует). Работа с главной и побочной диагоналями понятна, а вот в этом случае зашёл в тупик. Прошу помощи.
4 ответа

Vadster

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int n;
    int *m,i,j,min,sum;
    printf("Сторона матрицы:");
    scanf("%d",&n);
    m=calloc(n*n,sizeof(int));
    for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    {
        *(m+i*n+j)=(int)(rand()/32767.*10)-5;
        printf("%2d%c",*(m+i*n+j),(j+1!=n)?32:10);
    }
    min=*(m+n-1);
    for(i=1;i<n;i++)
    {
        sum=0;
        for(j=0;j<n-i;j++) sum+=*(m+j*n+i+j);
        if(sum<min) min=sum;
    }
    for(i=1;i<n;i++)
    {
        sum=0;
        for(j=0;j<n-i;j++) sum+=*(m+(i+j)*n+j);
        if(sum<min) min=sum;
    }
    printf("minsum:%d\n",min);
    getch();
    return 0;
}


Vadster

Безмерно вам благодарен! Единственное, что мне осталось непонятным,так это назначение (j+1!=n)?32:10 в строке
printf("%2d%c",*(m+i*n+j),(j+1!=n)?32:10);


Vadster

32-пробел, 10-новая строка


Vadster

32-пробел, 10-новая строка
(j+1!=n)?32:10)Это проверка условия "на месте", в printf, при false - пробел, при true - перевод строки, верно ?