Вывести минимальные значения каждой диагонали матрицы, параллельной главной - C (СИ)
Формулировка задачи:
Дана квадратная матрица порядка М. Вывести минимальные значения каждой ее диагонали, параллельной главной (начиная с одноэлементной диагонали А[1,M])
Самые самые трудности возникли в определении минимального элемента в диагонале
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void CreateRandArr (int m,int a[m][m]);
void PrintArr (int m, int a[m][m]);
void FindMin (int m, int a[m][m]);
int main (void)
{
int m=3;
int a[m][m];
CreateRandArr (m,a);
PrintArr (m,a);
FindMin (m,a);
return 0;
}#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void CreateRandArr (int m,int a[m][m])
{
int i,j;
srand (time (NULL));
for (i=0;i<m;i++)
for (j=0;j<m;j++)
a[i][j]=rand()%20+1;
}
void PrintArr (int m, int a[m][m])
{
printf ("\n <<<<Array>>>>\n\n");
int i,j;
for (i=0;i<m;i++)
{
for (j=0;j<m;j++)
printf ("%5i",a[i][j]);
printf ("\n");
}
}#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void FindMin (int m, int a[m][m])
{
int l,i,min;
for (l=1;l<=2*m-1;l++)
{
if (l<=m)
{
min=a[m-l+1][1];
// for (i=m-l+1;i<=m;i++)
for (i=1;i<=m-l+1;i++)
if (a[i][i-m+l]<min)
min=a[i][i-m+l];
printf("\n min element na diagonali %i = %i",l,min);
}
else
if (l>m)
{
min=a[2*m-l][m];
for(i=1;i<=2*m-l;i++)
if(a[i-m+l][i]<min)
min=a[i-m+l][i];
printf("\n min element na diagonali %i = %i",l,min);
}
}
}Решение задачи: «Вывести минимальные значения каждой диагонали матрицы, параллельной главной»
textual
Листинг программы
for (i=1;i<=m-l+1;i++)
{
if (a[i][i-m+l]<min)
min=a[i][i-m+l];
}
printf("\n min element na diagonali %i = %i",l,min);
Объяснение кода листинга программы
- Происходит итерация по всем элементам матрицы от первого до последнего элемента главной диагонали.
- Для каждого элемента проверяется его значение, если оно меньше текущего минимального значения, то обновляется значение переменной min.
- После завершения цикла выводится минимальное значение на главной диагонали матрицы.