В матрице поменять местами столбцы с максимальным и минимальным значением суммы элементов - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Народ, задача звучит так: необходимо в задаче размерностью N<=5, M<=10 (кол-во строк столбцов вводится вначале программы) вычислить сумму элементов для каждого столбца и поменять местами столбцы с максимальным и минимальным значением суммы, ну и собственно, отобразить полученную после свопа матрицу. Ввод матрицы, отображение исходной матрицы и сумму столбцов я написал, а вот как найти максимальное и минимальное значение суммы, а затем свопнуть соответствующие столбцы я не знаю. Можете помочь доделать/переделать программу? Исходный код:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
int main(void)
{
    int n,m;
    printf("Enter n: ");
    scanf("%d", &n);
    printf("\nEnter m: ");
    scanf("%d", &m);
    printf("\n");
////////////////////////////
    int mas[n][m];
    int i,j;
    for (i=1; i<=n; i++)
    {
        for (j=1; j<=m; j++)
        {
          printf("a[%d,%d] = ", i, j);
          scanf("%d", &mas[i][j]);
        }
    }
    printf("\n");
////////////////////////////
    printf("\n---MATRIX---\n\n");
    for (i=1; i<=n; i++)
    {
        for (j=1; j<=m; j++)
        {
            printf("%d ", mas[i][j]);
        }
        printf("\n");
    }
    printf("\n");
////////////////////////////
    printf("\n---COLUMN SUMM---\n\n");
 
    for (j=1; j<=m; j++)
    {
        int s=0;
        for (i=1; i<=n; i++)
        {
            s+=mas[i][j];
        }
        printf("COL %d | %d\n", j, s);
    }
    printf("\n");
}

Решение задачи: «В матрице поменять местами столбцы с максимальным и минимальным значением суммы элементов»

textual
Листинг программы
#include <stdio.h>
 
int main()
{
    int n,m,max=-999,min=-999,max_index=0,min_index=0;
    printf("Enter n: ");
    scanf("%d", &n);
    printf("\nEnter m: ");
    scanf("%d", &m);
    printf("\n");
////////////////////////////
    int mas[n][m];
    int i,j;
    for (i=0; i<n; i++)
    {
        for (j=0; j<m; j++)
        {
          printf("a[%d,%d] = ", i, j);
          scanf("%d", &mas[i][j]);
        }
    }
    printf("\n");
////////////////////////////
    printf("\n---MATRIX---\n\n");
    for (i=0; i<n; i++)
    {
        for (j=0; j<m; j++)
        {
            printf("%d ", mas[i][j]);
        }
        printf("\n");
    }
    printf("\n");
////////////////////////////
    printf("\n---COLUMN SUMM---\n\n");
 
    for (j=0; j<m; j++)
    {
        int s=0;
        for (i=0; i<n; i++)
        {
            s+=mas[i][j];
        }
        printf("COL %d | %d\n", j, s);
        if(s>max)
            {
                max=s;
                max_index=j;
            }
        if(s<min)
            {
                min=s;
                min_index=j;
            }
    }
    printf("\n");
 
//------swap----------
int tmp;
for(i=0;i<n;i++)
{
    for(j=0;j<m;j++)
    {
        tmp=mas[i][min_index];
        mas[i][min_index]=mas[i][max_index];
        mas[i][max_index]=tmp;
    }
}
//-------------
//---print---
 printf("\n---MATRIX---\n\n");
    for (i=0; i<n; i++)
    {
        for (j=0; j<m; j++)
        {
            printf("%d ", mas[i][j]);
        }
        printf("\n");
    }
    printf("\n");
 
return 0;
}

Объяснение кода листинга программы

В этом коде выполняются следующие действия:

  1. Запрашивается у пользователя ввод количества строк и столбцов для создаваемой матрицы с помощью функции scanf().
  2. Создается матрица, заполняемая пользователем с помощью двух вложенных циклов и функции scanf().
  3. Выводится на экран созданная матрица с помощью двух вложенных циклов и функции printf().
  4. Для каждого столбца вычисляется сумма элементов с помощью цикла и функции scanf().
  5. Если текущая сумма больше максимальной, то обновляются значения максимальной суммы и индекса столбца с максимальной суммой.
  6. Если текущая сумма меньше минимальной, то обновляются значения минимальной суммы и индекса столбца с минимальной суммой.
  7. С помощью двух вложенных циклов и временной переменной tmp выполняется перестановка элементов в выбранных столбцах.
  8. Выводится на экран измененная матрица с помощью двух вложенных циклов и функции printf().
  9. Программа завершается возвратом значения 0 из функции main().

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5
Похожие ответы