Найти минимальную сумму из сумм элементов диагоналей матрицы, параллельных побочной - C (СИ)
Формулировка задачи:
Сумму элементов самой побочной диагонали я нашла, а вот как найти ниже и выше..
#include <stdio.h>
#include <conio.h>
#include <math.h>
void main (void)
{
double a[20][20],c, min;
int n, i, j,s=0;
printf("Zadaite razmer massiva\n");
scanf ("%d",&n);
printf ("Vvedite massiv\n");
for (i=0;i<n;i++)
for (j=0;j<n;j++)
scanf ("%lf",&a[i][j]);
for (i=0;i<n;i++)
c+=a[i][n-1-i];
min=c;
printf("%4.1f\n",c);
getch();
}Решение задачи: «Найти минимальную сумму из сумм элементов диагоналей матрицы, параллельных побочной»
textual
Листинг программы
#include <stdio.h>
int main ()
{
double a[20][20];
double mins, sumgiag;
int n, i, k, j;
printf("Zadaite razmer massiva\n");
scanf ("%d",&n);
printf ("Vvedite massiv\n");
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
scanf ("%lf",&a[i][j]);
}
sumgiag = 0;
mins = a[0][0];
--n;
for(j = 0; j <= 1; ++j)
for(k = n*j+j; k <= (j + 1)*n; ++k)
{
printf("Giagonal %2d: ", k+1); // можно убрать
for(i = (n*j + (1-j)*k); i >= j*(k-n); --i)
{
printf("%3.1f ", a[i][k-i]); // можно убрать если не нужен вывод элементов диагоналей
sumgiag += a[i][k-i];
}
printf("\n");
if ( mins > sumgiag) mins = sumgiag;
sumgiag = 0;
}
printf("MinSumDiag = %3.1f\n",mins);
return 0;
}
Объяснение кода листинга программы
В этом коде выполняется следующая последовательность действий:
- Ввод размера матрицы (n) и заполнение матрицы a[i][j] с помощью функции scanf.
- Инициализация переменных sumgiag и mins значением первого элемента главной диагонали матрицы a[0][0].
- Уменьшение значения n на единицу.
- Два вложенных цикла, которые проходят по элементам всех побочных диагоналей матрицы, начиная с главной.
- Для каждого элемента диагонали выводится его значение и сумма элементов диагонали (sumgiag) добавляется к общему значению mins.
- Если текущее значение mins больше, чем сумма элементов диагонали, то обновляется значение mins.
- После завершения второго вложенного цикла значение sumgiag сбрасывается в ноль.
- Выводится минимальная сумма элементов диагоналей матрицы под названием MinSumDiag.
- Программа возвращает 0, что означает успешное завершение работы.