問1:ジャンケンを十回行って、何勝何敗、何引き
分けかを表示するプログラムを作れ。
問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() の括弧閉じ*/
--------------------------------------------------------------
--------------------------------------------------------------
No.2ベストアンサー
- 回答日時:
続きです。
質問というか注意すべき点があります。(1)乱数の計算結果はfloatなのにintに丸めちゃっていいのですか?
きっとコンパイラが警告を出してくれると思いますが、しっかりaに代入するときにキャストしてあげたほうがいいです。
それと乱数の発生(PCの結果は)1回だけでいいんでしょうか?
(2)入力時の考慮
1,2,3以外の値が入力された場合も何らかの処理をしてしまいます。
それは無条件にPCが負けと判断していいですか??
(3)勝ち負け引き分けの計算
先ほども回答したようにfor文を抜けた後のaは、初めに算出したaと一緒です。
すなわちrand()の結果を出しているだけです。
bに関しては、最後に入力した値です。
※大方の処理は合っているのでここではあえてソースは提示しません。
ヒントを参考に手を加えてみてください。
きっとあ~こうだったんだ。という実感が出来ると思います。
No.1
- 回答日時:
for以降のprint文での勝ちの回数が考慮されてません。
これでは最後に残っているa,bの値が表示されていませんか?
もし勝ちの回数を表示するのであれば、自分が勝った回数(PCでもいいです)を格納しておく変数が必要になります。
問2に関しても、自分が何回勝ったか格納しておく変数が必要です。
そして2回勝ったらfor文から抜ける処理(break;)を追加してあげればオッケーです。
この回答への補足
なんとッ!たまたまなのかうまくいったような気がしたので、合ってるのかなぁなどと思っていました(^^;)>
しかし、自分が勝った回数を格納しておく方法がわかりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# LU分解法のピボッティングについて(C言語/gcc-9) 3 2022/07/11 23:10
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# C言語でif文が予想と違う動きをする件について7 4 2023/03/20 00:26
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
10個出力で改行したいのですが...
-
カレンダーのプログラムについて
-
4の倍数を論理演算で表す。。
-
【C言語教えてください】sin波...
-
CTRL+Dでループを抜けるには
-
C言語です このプログラミング...
-
じゃんけんゲームをつくったの...
-
printf( " %2d", p * q );
-
defineで定数が置き換えられな...
-
printf で二進表示を行いたい。
-
一番大きい奇数を表示する
-
万年カレンダーのC言語プログラ...
-
両替プログラムなど
-
C言語初心者です。次の問題で質...
-
C言語です
-
困ってます!Cプログラミングに...
-
(C言語)めちゃくちゃな値にな...
-
TeraPadの設定方法
-
じゃんけんゲームの応用
-
C言語のじゃんけんゲームのプロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語について
-
printf で二進表示を行いたい。
-
cshの文字列操作(0埋め)
-
10個出力で改行したいのですが...
-
コンパイルエラーについて
-
テキストカーソル位置の取得
-
strcmp
-
unsigned int型について
-
c言語でAからZまでを表示する...
-
printf( " %2d", p * q );
-
コマンドラインに出力した文字...
-
printfの出力内の文字をdefine...
-
ホームページをC言語で作りたい...
-
コマンドプロンプトがすぐ消える
-
小数点切捨て表示
-
【C言語教えてください】sin波...
-
switch分のケースを範囲数?に...
-
二つの整数値の大小比較
-
4の倍数を論理演算で表す。。
-
defineで定数が置き換えられな...
おすすめ情報