プロが教える店舗&オフィスのセキュリティ対策術

アルゴリズムでのループの終了条件の<とか>とか問題によって色々違うのでどうなれば≧とか<になったりするのですか?

例えば10〇人分ループだと i≧100ですか?
c言語

A 回答 (4件)

C系の言語だと、配列の要素の範囲をインデックスで


表すのに

mからnまで(m≦n)は、mとn+1で表わすことが多い。
例 0から9→0と10
これはインデックスの指す要素と、そのひとつ前の要素
の間に仕切り(壁)があると考えて、2個の仕切りで範囲を
表わすというやり方。C言語では言語仕様の中にこの考え方を
サポートする部分があります。

アイビームカーソルの位置などもこの考え方を使ってます。
Javaで文字の選択範囲を表わす方法もこれです。

この考え方でループ回すとき k=n+1 とすると

for(i=m; i < k; i++) {


}

とするのがCの伝統ですね。

別の考え方で範囲を示しても良いですが
出来ればこれに従った方が無難。
でないと読む方が少し苦労します。
    • good
    • 0

どっちのほうが視覚的に分かりやすいか、で決まります。



No.1、No.2で回答があったように
配列の場合はインデックスが0から始まるので0~99までを処理します。
99という中途半端な数は余り好まれない傾向にありますし、
配列をループさせるときは0から始める(降順の場合は99からですが)ことが多いので
for(i = 0; i < 100; i++)
が一般的です。

人の数だけに注目した場合は1~100となるので
for(i = 1; i <= 100; i++)

と書かれることが多いでしょう。
    • good
    • 0

> どうなれば≧とか<になったりするのですか?



とか言われてもねぇ(苦笑)。
「時と場合による」としか言いようないし、「ちったぁ自分で考えろ」とか言いたいトコなんですが・・・。

> 例えば10〇人分ループだと i≧100ですか?

全然違うし、どーしたもんやら(苦笑)。

ただまあ、フォーマットを決めたい、ってのは悪い事ではないでしょう。

良くあるパターンで言うと・・・基本的にはC言語の「配列の数え方」が考え方のベースになってるわけですが。
つまり、配列相手にループを回す場合どうなるか、ってのがC言語やC言語を参考にした言語を使う際の考え方の基本になっています。

配列 = { 1, 2, 3, 4, 5.... };

があるとしますよね。
さて、上の配列の要素で「1」が入ってるのは何番目でしょう?

フツーなら「1番目」って言いたいトコですが、それだと間違いです。
1が入ってるのはC言語だと「0番目」ですね。

C言語だと配列の要素は0番目、1番目、2番目・・・と参照されます。
上の例だと「1が入ってるのは0番目」、「2が入ってるのは1番目」、「3が入ってるのは2番目」・・・・となってますね。

さて、そうすると、仮に100要素がある配列を宣言したとします。

int array[100];

配列にあるのは0番目の要素から「99番目までの要素」です。100番目は存在しません。
(0から99までで「100個ある」って事です)
従って、上の配列を全部舐めてループをしたい場合、適当な数iを宣言した後、

for (i = 0; i < 100; i++) {
 ... }

と言うカタチになります。
上の配列で言うとarray[100](配列の100番目の要素)は「存在しない」ので、100を含まないように i < 100にする、ってのが良くあるパターンです。
(繰り返しますが「要素数」は100個あるけど、配列の要素を参照する「100番目」と言う添字は存在しない、って事です)

とまぁ、フツーはプログラミングやる人だと「番号は0から数えて」n未満、と言う考え方を「好みます」。
これが主流だ、って事ですね。
(ちなみにPascalと言う言語だと「配列は1から数える」らしいんで、こういう流儀にはなりません)

100+n人分のループだと

i = 0;から始めて i < 100 + n

でしょうね。
    • good
    • 1

≧である必要があるときに≧


<である必要があるときに<

そうとしか答えようがありません。
あとは、***日本語で考えて*** 相応しいものを選びます。

> 例えば100人分ループだと i≧100ですか?

(1)i=0〜99 の100通りの数値を使うなら
 (1-1) i=0から始めて、 i<100 の間ループする
 (1-2) i=0から始めて、i≧100 になるまでループする(i≧100になったらループを止める)
 (1-3) i=0から始めて、 i≦99 の間ループする
 (1-4) i=0から始めて、i>99 になるまでループする(i>99になったらループを止める)
 (1-5) i=99から始めて、 i>-1 の間ループする
 (1-6) i=99から始めて、i≦-1 になるまでループする(i≦-1になったらループを止める)
 (1-7) i=99から始めて、 i≧0 の間ループする
 (1-8) i=99から始めて、i<0 になるまでループする(i<0になったらループを止める)
(2)i=1〜100 の100通りの数値を使うなら
(以下略)

と、極簡単に考えてもこれだけの表現があります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!