Решение готово
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
const int n=6;
typedef int Matrix[n][n];
/*ввод матрици с клавиатуры*/
void EnterMatrix(Matrix Matr){
for(int i=0; i<n; i++){
for (int j=0; j<n; j++){
printf("Matr[%d,%d]",i,j);
scanf("%d", &Matr[i][j]);
}}}
/*Генерация эелементов матрицы*/
void GenerateMatrix(Matrix Matr){
int max, min;
printf("Vvedite diapozon zna4eniy\n max=");
scanf("%d", &max);
printf("\n min=");
scanf("%d", &min);
for (int i=0; i<n; i++)
for (int j=0; j<n; j++)
Matr[i][j]=random(max-min)+min;
}
/*Вывод матрицы*/
void PrintMatrix(Matrix Matr){
for (int i=0; i<n; i++){
for( int j=0; j<n; j++){
printf ("%d ", Matr[i][j]);
}
printf ("\n");
}};
int sum(Matrix &Matr, int pos) {
int row = pos / (n / 2);
int column = pos % (n / 2);
row *= 2;
column *= 2;
int sum=Matr[row][column]+Matr[row][column+1]+Matr[row+1][column]+Matr[row+1][column+1];
return sum;
}
void swap(Matrix &Matr, int i, int j, int k, int z) {
int a = Matr[i][j];
Matr[i][j] = Matr[k][z];
Matr[k][z] = a;
}
void swap(Matrix &Matr, int pos1, int pos2) {
int row1 = pos1 / (n / 2);
int column1 = pos1 % (n / 2);
int row2 = pos2 / (n / 2);
int column2 = pos2 % (n / 2);
row1 *= 2;
column1 *= 2;
row2 *= 2;
column2 *= 2;
swap(Matr, row1, column1, row2, column2);
swap(Matr, row1, column1 + 1, row2, column2 + 1);
swap(Matr, row1 + 1, column1, row2 + 1, column2);
swap(Matr, row1 + 1, column1 + 1, row2 + 1, column2 + 1);
}
/*Сортировка матрицы по условию задачи*/
void Sortirovka(Matrix &Matr){
int sum1, sum2;
char is=1;
int i;
int len = (n * n) / 4 ;
while(is)
{
is=0;
for (i=1; i<len; i++) {
sum1 = sum(Matr, i);
sum2 = sum(Matr, i - 1);
if ( sum1 < sum2 )
{
swap(Matr, i, i - 1);
is=1;
}
}
}
}
main(){
int dey=0;
Matrix M;
char ask;
do{
/*Выбор действия*/
printf("Viberite neobhodimoe deystvie i najmite ukazannuu klavi6u\n");
printf ("(a)Vvesti matricu s klaviaturi\n");
printf ("(b)Sgenirirovat' matricu\n");
printf ("(c)Vivesti matricu na ekran\n");
printf ("(d)Sortirovka\n");
printf ("(e)Exit\n");
scanf("%c", &ask);
switch(ask){
case 'a':{
printf("Vvod matrici s klaviaturi\n");
EnterMatrix(M);
printf ("Polu4ivwaysja matrica\n");
PrintMatrix(M);
dey=1;
getch();
break;
};
case 'b':{
printf ("Generacija matrici\n");
GenerateMatrix(M);
printf ("Polu4ivwaysja matrica\n");
PrintMatrix(M);
dey=1;
getch();
break;
};
case 'c':{
if (dey==1){
printf ("Vivod matrici\n");
PrintMatrix(M);
} else break;
getch();
break;
};
case 'd':{
if (dey==1){
printf ("Sortirovka po usloviu zada4i\n");
Sortirovka(M);
PrintMatrix(M);
} else break;
getch();
break;
};
};
} while (ask!='e');
}