C言語関係掲示板

過去ログ

No.1022 ループの継続条件にrand()を使うと

[戻る] [ホームページ]
No.13013

演習7−4の問1について
投稿者---lot(2004/02/28 18:49:56)


演習7−4の問1、自力で頑張って解いて、コンパイルしても正常に動いた
のですが、解答と違っていました。↓でも正解になりますか?

<pre>
#include &lt;stdio.h&gt;
#include &ltstdlib.h&gt;

int main(void){
char ch = '*';
int x, y;

x = 0;
while(x < 10){
for(y = 0; y < rand() % 80 + 1; y++){
printf("%c", ch);
}
putchar('\n');
x++;
}

return 0;
}
</pre>

No.13014

Re:演習7−4の問1について
投稿者---lot(2004/02/28 18:57:14)


訂正。すいません。

#include <stdio.h>
#include <stdlib.h>

int main(void){
    char ch = '*';
    int x, y;
    
    x = 0;
    while(x < 10){
        for(y = 0; y < rand() % 80 + 1; y++){
            printf("%c", ch);
        }
        putchar('\n');
        x++;
    }
    
    return 0;
}


No.13015

Re:演習7−4の問1について
投稿者---ともじ(2004/02/29 15:04:43)


このプログラムを実行すると、解答例にあるプログラムよりも表示する * の幅が
短いと思います。
これは、
for(y = 0; y < rand() % 80 + 1; y++)

でループのたびに継続条件値を求めなおしているために、y よりも少ない値の
継続条件値が算出されると、
その場でループを終えてしまうからです。
ですから、やはり解答例のようにループの前で継続条件値を求めるべきでしょう。

No.13016

Re:演習7−4の問1について
投稿者---lot(2004/02/29 15:22:33)


レスありがとうございます。
解答例参考にしてもうちょっと勉強してきます。