交换矩阵中的最大值和最小值

M.马拉耶夫

我试图用给定矩阵中的最小元素交换最大元素,但程序交换了错误的值。

#include <stdio.h>


int main(void)
{
    int n, m, largest;

    int arr[100][100];
    int swap[100][100];

    scanf("%d %d", &n, &m);

    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            scanf("%d", &arr[i][j]);
        }
    }

    largest = arr[0][0];

    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            swap[i][j] = arr[i][j];
            if (largest < arr[i][j])
            {
                swap[i][j] = arr[j][i];
            }
        }
    }

    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            printf("%d ", swap[i][j]);
            if (j == m - 1)
            {
                printf("\n");
            }
        }
    }

    return 0;
}
带LDN

您应该找到最小元素 (i min, j_min) 和最大元素 (i_max, j_max) 的索引,并使用如下临时变量更改这两个值(最大值和最小值):

注意:您应该按行更改“n”,按列更改“m”

#include <stdio.h>

int main(void)
{
    int rows, cols;
    do
    {
          printf("Give me the number of rows :");
          scanf("%d",&rows);
    }while(rows<1);
    do
    {
          printf("Give me the number of cols :");
          scanf("%d",&cols);
    }while(cols<1);
    int arr[rows][cols];
    printf("\nThe filling of the Matrix :\n");
    for (int i = 0; i < rows; i++)
    {
        for (int j = 0; j < cols; j++)
        {
            scanf("%d", &arr[i][j]);
        }
    }
    int i_max = 0,j_max=0;
    int i_min = 0,j_min=0;
    int max=arr[0][0];
    int min=arr[0][0];
    for (int i = 0; i < rows; i++)
    {
        for (int j = 0; j < cols; j++)
        {
            if (arr[i][j]>max)
            {
                max=arr[i][j];
                i_max=i;// i_max mean's the index i of the maximum element
                j_max=j;// j_max mean's the index j of the maximum element
            }
            if(arr[i][j]<min)
            {
                min=arr[i][j];
                i_min=i;// i_max mean's the index i of the minimum element
                j_min=j;// j_max mean's the index j of the minimum element
            }
        }
    }
    printf("\nDisplay of the Matrix before the swap :\n");
    for (int i = 0; i < rows; i++)
    {printf("\n");
        for (int j = 0; j < cols; j++)
        {
             printf("[%d]", arr[i][j]);
        }
    }

    int temp=arr[i_min][j_min];
    arr[i_min][j_min]=arr[i_max][j_max];
    arr[i_max][j_max]=temp;

    printf("\n\nDisplay of the Matrix after the swap :\n");

    for (int i = 0; i < rows; i++)
    {printf("\n");
        for (int j = 0; j < cols; j++)
        {
            printf("[%d]", arr[i][j]);
        }
    }
    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章