Forの中のforとそのforの中の意味についての質問です。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
03life
記事: 13
登録日時: 3週間前

Forの中のforとそのforの中の意味についての質問です。

#1

投稿記事 by 03life » 2週間前


https://atcoder.jp/contests/abc194/tasks/abc194_b

この問題で次のような回答をみつけました。

コード:

#include<stdio.h>
void main(void){
    int n,a[1000],b[1000],A_MIN=100000,B_MIN=100000,p=100000,x;
    scanf("%d",&n);
    for (int i = 0; i < n; i++)
    {
        scanf("%d %d",&a[i],&b[i]);
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (i==j)
            {
                x=a[i]+b[j];
            }else if (a[i]>b[j])
            {
                x=a[i];
            }else
            {
                x=b[j];
            }
            if (p>x)
            {
                p=x;
            }
        }
    }
    printf("%d\n",p);
}
この回答の以下の部分の意味が理解できないので解説をお願いしたく質問しました。

コード:


    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (i==j)
            {
                x=a[i]+b[j];
            }else if (a[i]>b[j])
            {
                x=a[i];
            }else
            {
                x=b[j];
            }
            if (p>x)
            {
                p=x;
            }
        }
    }
    printf("%d\n",p);
    

box
記事: 1787
登録日時: 10年前

Re: Forの中のforとそのforの中の意味についての質問です。

#2

投稿記事 by box » 2週間前

この回答の以下の部分の意味が理解できないので解説をお願いしたく質問しました。

コード:


    for (int i = 0; i < n; i++)    // iを0~n-1までn回くり返す
    {
        for (int j = 0; j < n; j++)    // jを0~n-1までn回くり返す(つまりこの2重ループはn*n回まわる)
        {
            if (i==j)    // iとjが等しければ
            {
                x=a[i]+b[j];    // xにa[i]とb[j]の和を代入する
            }else if (a[i]>b[j])    // iとJが等しくなく、a[i]がb[j]より大きければ
            {
                x=a[i];    // xにa[i]を代入する
            }else    // iとjが等しくなく、a[i]がb[j]以下ならば
            {
                x=b[j];    // xにb[j]を代入する
            }
            if (p>x)    // pがxよりも大きければ
            {
                p=x;    // pにxを代入する
            }
        }
    }
    printf("%d\n",p);    // pの値を出力する
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

box
記事: 1787
登録日時: 10年前

Re: Forの中のforとそのforの中の意味についての質問です。

#3

投稿記事 by box » 2週間前

nに3あたりの小さめの数を設定して、
自分がコンピューターになったつもりで
コードを1行ずつ追いかけてみては?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

03life
記事: 13
登録日時: 3週間前

Re: Forの中のforとそのforの中の意味についての質問です。

#4

投稿記事 by 03life » 2週間前

box さんが書きました:
2週間前
nに3あたりの小さめの数を設定して、
自分がコンピューターになったつもりで
コードを1行ずつ追いかけてみては?
ありがとうございます。自分でもやってみたのですが、それでもまったくわからず質問させていただきました。

box
記事: 1787
登録日時: 10年前

Re: Forの中のforとそのforの中の意味についての質問です。

#5

投稿記事 by box » 2週間前

その上のコードに書いた
当方からのコメントを
追いかけてみましたか?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

返信

“C言語何でも質問掲示板” へ戻る