Вообщем сделал я свою программу , только осталась одна загвостка,
она правильно сортирует строки только тогда когда строго сумма первой строки массива<2-ой строки<суммы 3-ей строки
А если наприер сумма второй строки самая большая, то уже считает с ошибкой.
Сделал по-принципу: присвоил temp1,temp2,temp3 сумму каждой строки, потом сделал проврку с циклом,
типа если temp1<temp2, то поменять строки местами.
Вот код:
Сортировать должен сверху самая большая сумма, ниже меньше
Код:
#include <stdio.h>
#define M 3
#define N 3
#define MAX 100 // наше ограничение
void main(void)
{
int mas[M][N]; // Объявление двумерного массива
int temp[M];
int i,j,temp1,temp2,temp3;
// Ввод массива
for(i=0;i<M;i++) // цикл по строкам
{
for(j=0;j<N;j++) // цикл по элементам строки
{
// Ввод значения элемента массива
printf(" A[%d][%d]=", i, j);
scanf("%d",&mas[i][j]);
}
}
printf("\n");
getch();
//---------------------------------Вывод массива
printf("Ishodniy massiv:");
printf("\n");
for(i=0;i<M;i++) // цикл по строкам
{
for(j=0;j<N;j++) // цикл по элементам строки
{
printf("%4d", mas[i][j]);
}
printf("\n");
}
printf("\n");
// ---------- Обработка и вывод
printf("Otsortirovaniy massiv:\n");
for(i=0; i<=M-2; i++)
{
temp1=0; temp2=0;
for(j=0; j<=N; j++)
{
temp1=temp1+mas[i][j];
temp2=temp2+mas[i+1][j];
temp3=temp3+mas[i+2][j];
if (temp2<temp3)
{
for(j=0; j<=N-1; j++)
{
temp[i]=mas[i+1][j];
mas[i+1][j]=mas[i+2][j];
mas[i+2][j]=temp[i];
}
}
if (temp2<temp1)
{
for(j=0; j<=N-1; j++)
{
temp[i]=mas[i+1][j];
mas[i+1][j]=mas[i][j];
mas[i][j]=temp[i];
}
}
if (temp1<temp2)
{
for(j=0; j<=N-1; j++)
{
temp[i]=mas[i][j];
mas[i][j]=mas[i+1][j];
mas[i+1][j]=temp[i];
}
}
if (temp2<temp3)
{
for(j=0; j<=N-1; j++)
{
temp[i]=mas[i+1][j];
mas[i+1][j]=mas[i+2][j];
mas[i+2][j]=temp[i];
}
}
for (i=0;i<M;i++)
{
for (j=0;j<N;j++)
{
printf("%4d",mas[i][j]);
}
printf("\n");
getch();
}
}
}
/*for (i=0;i<M;i++)
{
for (j=0;j<N;j++)
{
printf("%4d",mas[i][j]);
}
printf("\n");
getch();
}*/
/*// ------- Вывод суммы элементов каждой строки массива
printf("Summa elemenov strok massiva:\n");
for(i=0;i<M;i++)
printf("%4d", mas[i][0]);
getch();*/
}