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:二重ループの回数について
疑わしければ確認するためのプログラムを書いてみてはどうでしょう。
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;
}
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;
}
Re:二重ループの回数について
やってみました。
順番を入れ替えても1100回や1010回にはならないです。
何か特別な条件があるとも思えないですし、
やっぱり書いた人のミスなんでしょうかね?
順番を入れ替えても1100回や1010回にはならないです。
何か特別な条件があるとも思えないですし、
やっぱり書いた人のミスなんでしょうかね?
Re:二重ループの回数について
そのサイトでは「何がNGなのかというと、ループの回数です。」と書かれていますが、
ループカウンタであるi, j がインクリメントされる回数の合計の話だと思います。
ループカウンタであるi, j がインクリメントされる回数の合計の話だと思います。
Re:二重ループの回数について
おおっなるほど!
確かにそうですね!
つまりはこういうことですね
#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回になりますね!ありがとうございました!
確かにそうですね!
つまりはこういうことですね
#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回になりますね!ありがとうございました!