【问题标题】:C finding maximum number in a row of 2D array and replacing it with elements in the upper triangleC在一行二维数组中找到最大数并将其替换为上三角形中的元素
【发布时间】:2013-06-16 16:45:35
【问题描述】:

基本上我想创建一个大小为 NxN 的二维数组,在每一行中找到最大值并将其替换为上三角形,或者将元素替换为该特定行的最大值,但在对角线上方。

#include <stdio.h>
#include <stdlib.h>
#define MAXIMUM 100

int main()
{
     int n, i, j, temp,m;
    float a[MAXIMUM][MAXIMUM], max;
    printf("dimensions: ");
    scanf("%d",&n);
    printf("input elements\n");
    for (i=0; i<n; i++){
        for (j=0; j<n; j++){
            scanf("%f",&a[i][j]);
        }
    }

    max=a[0][0];
    for (i=0; i<n; i++){
        for (j=0; j<n; j++)
            {
                if(max<a[i][j]){
                    max=a[i][j];
                }

            for(m=0;m<n;m++) //the problem starts here
                {
                    if(max>a[i][m]){
                        if(i+m>n-1){
                        a[i][m]=max;
                        }

                    }
                }
            }
        }

            for(i = 0; i < n; i++) {
                printf("\n");
                    for(j = 0; j < n; j++) {
                            printf("%f ", a[i][j]);
                        }
        }
    return 0;
}

【问题讨论】:

  • 你的问题是什么?
  • 您没有在 load 循环集期间确定最大值而不是在之后尝试这样做的任何特殊原因?
  • 我的问题是,这个东西不能正常工作我需要一些帮助,给我指出正确的答案。我想这是因为我需要分别更改每一行的最大值,所以我需要多个最大值

标签: c arrays 2d


【解决方案1】:

每次J循环结束,然后m循环开始,所以在m循环时j的值为n-1。这是一个问题。

【讨论】:

  • 是的,我注意到了它并改变了那部分,但现在如果我像这样输入数组 1 2 3 4 5 6 7 8 9 它很好,但如果我完全尊重输入它不会正确计算它, 是上三角还是下三角
【解决方案2】:

可能是这样的

for (i=0; i<n; i++){
    max=a[i][0];
    for (j=1; j<n; j++){
        if(max<a[i][j]){
            max=a[i][j];
        }
    }
    for(m=i;m<n;m++){
        a[i][m]=max;
    }
}

【讨论】:

    猜你喜欢
    • 2022-11-17
    • 1970-01-01
    • 2022-11-13
    • 2021-06-14
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    相关资源
    最近更新 更多