- 締切済み
じゃんけんゲームの応用
• 問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() の括弧閉じ*/ -------------------------------------------------------------- --------------------------------------------------------------
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- redfox63
- ベストアンサー率71% (1325/1856)
問1のソースでコンピュータの手は 常に同じ手しか使われていません つまり 変数aの値が変化していません forループの中で更新するようにしましょう 勝ち負けを判定した場合に カウントする変数を用意しないと最終結果(何勝何敗何引き分け)が出ませんよ int nComp = 0, nMan = 0; などを用意して 勝負判定時に 該当する変数を加算しましょう 現状のソースでは最後に入力したbとforループ前に代入したaをつかって 勝敗結果を表示しています これでは おかしな結果しか表示されません 自分が5回勝っても『私が3回勝ち』になってしまう場合があります
- koko_u_
- ベストアンサー率18% (459/2509)
コンピュータはずっと同じ手しか出さないんですか? 勝ち負けの回数をカウントできていますか?
補足
コンピュータはランダムで手を出してきます。 "勝ち負けの回数をカウント"についてはよくわかりません。 そもそも問1を作ったとき、すでにいっぱいっぱいでした。 どうやったらカウントできるのかもいまいちなのです。
補足
なんとッ!そうなのですか!問一は一回プログラムを実行してみて、なんとなくうまくいったような気になっていたので、てっきり合っているのかと。 回答ありがとうございました。もっと勉強しますね。