Упорядочить столбцы матрицы по убыванию суммы элементов - C (СИ)
Формулировка задачи:
Дана вещественная матрица размером 5х5.Упорядочить её столбцы по убыванию суммы элементов.
Решение задачи: «Упорядочить столбцы матрицы по убыванию суммы элементов»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define AUMAN(a) a == 1 ? scanf("%lf", &arr[i][j]) : arr[i][j] = (double)rand() / 1234.
int main()
{
void srt(double[5][5], double*);
void prtn(double[5][5], double*);
srand(time(NULL));
double arr[5][5], sort[5]{ 0 };
int m;
printf("For manual enter 1, for auto any number: ");
scanf("%d", &m);
for (int i = 0; i < 5; ++i)
for (int j = 0; j < 5; ++j)
AUMAN(m);
for (int i = 0; i < 5; ++i)
for (int j = 0; j < 5; ++j)
sort[i] += arr[j][i];
prtn(arr, sort);
srt(arr, sort);
prtn(arr, sort);
return 0;
}
//-------------------------------------------------------------
void prtn(double arr[5][5], double *sort)
{
for (int i = 0; i < 5; ++i) {
printf("\n");
for (int j = 0; j < 5; ++j)
printf("[%lf]\t", arr[i][j]);
}
printf("\n\n");
for (int i = 0; i < 5; ++i)
printf("<sum elements>\t");
printf("\n");
for (int i = 0; i < 5; ++i)
printf("<%lf>\t", sort[i]);
printf("\n\n");
}
//-------------------------------------------------------------
void srt(double arr[5][5], double *sort)
{
int x;
double nm;
for (int j = 0; j < 5; ++j) {
for (int i = x = j, nm = sort[j]; i < 5; ++i)
if (nm > sort[i]) {
x = i;
nm = sort[i];
}
nm = sort[x];
sort[x] = sort[j];
sort[j] = nm;
for (int l = 0; l < 5; ++l) {
nm = arr[l][x];
arr[l][x] = arr[l][j];
arr[l][j] = nm;
}
}
}