プロが教えるわが家の防犯対策術!

• 問1:ジャンケンを十回行って、何勝何敗、何引き
分けかを表示するプログラムを作れ。
• 問2:計算機とじゃんけんを行って、貴方が計算
機より2回多く勝つまで続けるプログラムを作れ。

上記の問題で、どうしても問2がわかりません。"問1を少し変えれば問2はできる"と思うのですが・・・。
どこをどう変えればよいのか、どなたか回答願います。

使っている言語はC言語です。また、私はC言語初心者なので、if文やfor文、do~while文あたりまでしか使えません。
下記に示すのは私が作った、問1のソースです。参考までに。
----------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main(){
int i, a, b;time_t seed;
seed=time(&seed); srand(seed*(seed%12345));
a=3.0*(float)rand()/(RAND_MAX+1.0)+1;

for(i=0;i<10;i++){
printf("1、2、3 ?\n");
scanf("%d",&b);
printf("PCは%d\n",a);

if(a==b){
printf("アイコッ!\n");
}else{
if((a==1 && b==2) || (a==2 && b==3) || (a==3 && b==1 )){
printf("PCが勝ちッ!\n");
}else{printf("PCが負けッ!\n");}
}/*if の括弧閉じ*/

}/* for の括弧閉じ*/

printf( "結果発表ッ!\n" );
printf( "私は%d 回勝ちッ!\n",b );
printf( "PCは%d 回勝ちッ!\n", a);
printf( "引き分けは %d 回ッ!\n", (10 - a - b) );
return 0;

}/*main() の括弧閉じ*/
--------------------------------------------------------------
--------------------------------------------------------------

A 回答 (2件)

コンピュータはずっと同じ手しか出さないんですか?


勝ち負けの回数をカウントできていますか?

この回答への補足

コンピュータはランダムで手を出してきます。

"勝ち負けの回数をカウント"についてはよくわかりません。
そもそも問1を作ったとき、すでにいっぱいっぱいでした。
どうやったらカウントできるのかもいまいちなのです。

補足日時:2008/06/19 00:12
    • good
    • 0

問1のソースでコンピュータの手は 常に同じ手しか使われていません


つまり 変数aの値が変化していません
forループの中で更新するようにしましょう

勝ち負けを判定した場合に カウントする変数を用意しないと最終結果(何勝何敗何引き分け)が出ませんよ
int nComp = 0, nMan = 0;
などを用意して 勝負判定時に 該当する変数を加算しましょう

現状のソースでは最後に入力したbとforループ前に代入したaをつかって 勝敗結果を表示しています
これでは おかしな結果しか表示されません
自分が5回勝っても『私が3回勝ち』になってしまう場合があります

この回答への補足

なんとッ!そうなのですか!問一は一回プログラムを実行してみて、なんとなくうまくいったような気になっていたので、てっきり合っているのかと。
回答ありがとうございました。もっと勉強しますね。

補足日時:2008/06/19 08:36
    • good
    • 0

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