Поменять местами наибольший элемент на главной и побочной диагоналях с тем, который стоит на пересечении этих диагоналей - C (СИ)
Формулировка задачи:
Задана квадратная матрица (не больше 10х10) вещественных чисел. Найти наибольший элемент среди тех, что расположены на главной и побочной диагоналях и поменять его с элементом, который стоит на пересечении этих диагоналей.
__________________________________________________________________________________
Вот эта программа:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
void main()
{ int x=1,y=1,z,i,j,n,i1,j1,max;
float a[10][10];
printf("\n Enter the size of your matrix (n<10): ");
scanf("%i", &n);
printf("Enter the elements of the matrix: \n", i,j);
for (i=0; i<n; i++)
{ for (j=0; j<n; j++)
{ scanf("%f", &a[i][j]);
}
}
printf("Your matrix:\n");
for (i=0; i<n; i++)
{ for (j=0; j<n; j++)
printf("%4.1f ", a[i][j]);
printf("\n");
}
i1=0;
j1=0;
for (i=0; i<n; i++)
for (j=0; j<n; j++)
if (a[i][j]>a[i1][j1])
{ i1=i;
j1=j; }
{ max=a[n/2][n/2];
a[n/2][n/2]=a[i1][j1];
a[i1][j1]=max; }
printf("Changed matrix:\n");
for (i=0; i<n; i++)
{ for (j=0; j<n; j++)
printf("%4.1f ", a[i][j]);
printf("\n");
}
}Решение задачи: «Поменять местами наибольший элемент на главной и побочной диагоналях с тем, который стоит на пересечении этих диагоналей»
textual
Листинг программы
for(i=0;i<n;i++)
{
if(a[i][i]>max)
max=a[i][i];
}
for(i=n;i>0;i--)
{
if(a[i][i]>max)
max=a[i][i]
}
Объяснение кода листинга программы
- Переменная
nсодержит размер матрицы. - Переменная
maxинициализируется значением, которое меньше, чем любой элемент матрицы. - Первый цикл проходит по всем элементам главной диагонали матрицы. Если текущий элемент больше значения переменной
max, то значение переменнойmaxприсваивается текущему элементу. - Второй цикл проходит по всем элементам побочной диагонали матрицы, начиная с последнего элемента (индекс
n). Если текущий элемент больше значения переменнойmax, то значение переменнойmaxприсваивается текущему элементу. - После завершения второго цикла, значение переменной
maxбудет содержать наибольший элемент, который стоит на пересечении главной и побочной диагоналей.