二重ループの回数について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
shuto

二重ループの回数について

#1

投稿記事 by shuto » 15年前

forループの数え方ですが

 for( int i = 0; i < 100; i++ )
 {
   for( int j = 0; j < 10; j++ )
   {
     AAAA;
   }
 }

のようなループがあったら AAAA; は1000回動作であってますよね?
あるweb上のページにこの二重ループについて

10回 * 100回 + 100回 = 1100回
ループの順番を逆にすれば
100回 * 10回 + 10回 = 1010回

と書いてありました。何か私が勘違いして数え間違ってたりするのでしょうか?

シエル

Re:二重ループの回数について

#2

投稿記事 by シエル » 15年前

私は1000回だと思いますが。。
そのWEBページどこですか?

shuto

Re:二重ループの回数について

#3

投稿記事 by shuto » 15年前

http://members3.jcom.home.ne.jp/progstu ... tips4.html
ですね。
5年ほど前から更新がないようですが。

シエル

Re:二重ループの回数について

#4

投稿記事 by シエル » 15年前

本当に書いてありますね。どう考えても1000回だと思うんですが。
ベテランの人の回答がほしいです。

fatens

Re:二重ループの回数について

#5

投稿記事 by fatens » 15年前

疑わしければ確認するためのプログラムを書いてみてはどうでしょう。
Webページに書いてあることが常に正しいとは限らないので。

#include <stdio.h>

int main(void)
{
int i, j, count = 0;

for (i = 0; i < 100; i++) {
for (j = 0; j < 10; j++) {
count++;
printf("%d\n", count);
}
}

return 0;
}

shuto

Re:二重ループの回数について

#6

投稿記事 by shuto » 15年前

やってみました。
順番を入れ替えても1100回や1010回にはならないです。

何か特別な条件があるとも思えないですし、
やっぱり書いた人のミスなんでしょうかね?

ドラ

Re:二重ループの回数について

#7

投稿記事 by ドラ » 15年前

そのサイトでは「何がNGなのかというと、ループの回数です。」と書かれていますが、
ループカウンタであるi, j がインクリメントされる回数の合計の話だと思います。

shuto

Re:二重ループの回数について

#8

投稿記事 by shuto » 15年前

おおっなるほど!
確かにそうですね!

つまりはこういうことですね

#include <stdio.h>

int main()
{
int i,j,n=0;

for(i=0;i<10;i++,n++){
for(j=0;j<100;j++,n++){
}
}
printf("%d\n",n);

n=0;
for(i=0;i<100;i++,n++){
for(j=0;j<10;j++,n++){
}
}
printf("%d\n",n);
return 0;
}


これなら1100回と1010回になりますね!ありがとうございました!

naohiro19

Re:二重ループの回数について

#9

投稿記事 by naohiro19 » 15年前

外側が1回ループするごとに内側が10回繰り返されます。

閉鎖

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