89517


以下の問題に対して、二重ループを使った最大値と最小値の求め方が分かりません。  
どのようにして２つのループを使い求めれば良いのでしょうか。

> **問題:**
>
> 以下の配列から1列の最大値と最小値、2列の最大値と最小値を二重ループを使い求める。  
>  この時、1列の最大値は `max[0]`に、最小値は `min[0]` 、2列の最大値は `max[1]` に、最小値は `min[1]`
> に格納する。
[code]

    x[4][2]={{3,2},
             {2,5},
             {5,2},
             {4,1}};
    
[/code]


CC BY-SA 4.0
2022-06-21T14:05:04.923
89507
2022-06-22T02:41:26.973
2022-06-22T00:33:30.630
3060
53173
question
c
C言語での2次元配列の最大値と最小値


「１つのループならif文を使い求めることができました。」とか「それも試したのですが列を分けることが出来ませんでした。」あたりの試行錯誤の状況や、その時のソースコードも質問に追記すると貴方の理解度が明確化されて、考え方/着目点への助言が出やすいでしょう。

それで私のコメント「列(2次元目)のループを外側に、行(1次元目)のループを内側にすれば出来るでしょう。」に沿った内容としては以下のように出来るはずです。

[code]

    #include <stdio.h>
    #include <limits.h>
    
    int main()
    {
        int max[2] = { INT_MIN,INT_MIN };
        int min[2] = { INT_MAX,INT_MAX };
        int x[4][2] = { {3,2},
                        {2,5},
                        {5,2},
                        {4,1} };
    
        for (int column = 0; column < 2; column++) {
            for (int row = 0; row < 4; row++) {
                int n = x[row][column];
    
                if (max[column] < n) {
                    max[column] = n;
                }
                if (min[column] > n) {
                    min[column] = n;
                }
            }
        }
        printf("最大値：1列目=%d, 2列目=%d\n", max[0], max[1]);
        printf("最小値：1列目=%d, 2列目=%d\n", min[0], min[1]);
    }
    
[/code]


CC BY-SA 4.0
2022-06-22T02:41:26.973
89517
2022-06-22T02:41:26.973
26370
89507
answer