Работа с элементами диагоналей квадратной матрицы - C (СИ)
Формулировка задачи:
Матрица квадратная, массив нужно выделить динамически.
.
Найти наименьшую из сумм диагоналей , параллельных главной (полагаю, при этом главная не участвует). Работа с главной и побочной диагоналями понятна, а вот в этом случае зашёл в тупик.
Прошу помощи.
Решение задачи: «Работа с элементами диагоналей квадратной матрицы»
textual
Листинг программы
#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;
}
Объяснение кода листинга программы
В этом коде:
- Синтаксический анализ и компиляция кода
- Задается размер матрицы (n)
- Выделяется память под матрицу (m)
- Заполняются элементы матрицы случайными числами от -5 до 5
- Находится минимальная сумма элементов главной диагонали матрицы
- Находится минимальная сумма элементов побочной диагонали матрицы
- Выводится минимальная сумма элементов диагоналей на экран
- Программа ожидает нажатия клавиши для завершения работы
- Свободно выделяется память, занятая под матрицу (m)
- Возвращается 0, что означает успешное завершение работы программы