ここから本文です

C言語の問題が分かりません。 解答をお願いします。 Borland C++ Compilerを使っ...

sho********さん

2019/11/2521:47:18

C言語の問題が分かりません。
解答をお願いします。
Borland C++ Compilerを使っています。

問題
疑似乱数を使用して、繰り返しじゃんけんを行うプログラムを作りなさい。

以下に、コンソールの入出力結果を示す。

じゃんけん・・・・
(1:グー 2: チョキ 3: パー 9:終了)
>1
あなた:グー コンピュータ: チョキ あなたの勝ち
じゃんけん・・・・
(1:グー 2: チョキ 3: パー 9:終了)
>2
あなた:チョキ コンピュータ: チョキ 引き分け
じゃんけん・・・・
(1:グー 2: チョキ 3: パー 9:終了)
>9
あなたの1勝0負1分けでした。

閲覧数:
88
回答数:
4
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

sh_********さん

2019/11/2601:17:24

他の回答者の方もおっしゃっている通り、
勝つ、負け、引き分けの条件など、フローを整理してから書いたほうが良いです。

※下記は参考までに。

(例)
-----
#include<stdio.h>
#include <stdlib.h>
#include <time.h>

void showType(int type){
if(type==1)printf("グー");
else if(type==2)printf("チョキ");
else printf("パー");
}

void showResult(int human, int cpu, char result[]){
printf("あなた: ");
showType(human);
printf(" コンピュータ: ");
showType(cpu);
printf(" %s\r\n",result);
}

int main(void)
{
int human=0;
int cpu=0;
int win=0,lose=0,draw=0;
srand(time(NULL));
do{
printf("じゃんけん・・・・\r\n(1:グー 2: チョキ 3: パー 9:終了)\r\n>");
scanf("%d", &human);
cpu=rand() % 3 + 1;
if(human==0 || (human>3 && human<9) || human>9)continue;
else if(human==9)break;
else if(cpu==human){
draw++;
showResult(human,cpu,"引き分け");
}else if((human==1 && cpu==2) || (human==2 && cpu==3) || (human==3 && cpu==1)){
win++;
showResult(human,cpu,"なたの勝ち");
}else if((human==1 && cpu==3) || (human==2 && cpu==1) || (human==3 && cpu==2)){
lose++;
showResult(human,cpu,"あなたの負け");
}
}while(1);
printf("あなたの%d勝%d負%d分でした。\r\n",win,lose,draw);
return(0);
}

-----

※余談ですが、15年ぶりにC言語のコードを触りました。。
※ここまで書いてから気づきましたが、下記参考サイトにより良い説明がありました。
< http://www.ics.kagoshima-u.ac.jp/edu/katuyoukiso/vc/step4.html >

以上
参考になれば幸いです。

質問した人からのコメント

2019/11/28 23:52:25

御回答有難うございます。助かりました。

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

Hermitさん

2019/11/2607:28:54

勝敗の判定は、
(コンピュータの手 ー 自分の手 + 負値にならないように3を足す)%3
で、勝敗の数値になります。

2019/11/2606:50:35

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

int main(void)
{
char *mess[3]={"あなたの勝ち","あなたの負け","引き分け"};
char *hands[3]={"グー","チョキ","パー"};
int answer,input,f;
int k[3]={0};
int tbl[3][3]={{2,0,1},{1,2,0},{0,1,2}};
srand(time(NULL));
printf("ゲームスタート\n");
while(1)
{
answer = rand() % 3;
printf("じゃんけん・・・・\n(1:グー 2: チョキ 3: パー 9:終了)");
scanf("%d", &input);
if(input==9) break;
f=tbl[input-1][answer];
k[f]++;
printf("あなた:%s コンピュータ: %s %s\n",hands[input-1],hands[answer],mess[f]);
}
printf("あなたの%d勝%d敗%d分でした\n", k[0],k[1],k[2]);
return 0;
}

プロフィール画像

カテゴリマスター

あみやさん

2019/11/2522:36:21

まずは、じゃんけんという行為を、具体的な手順毎に分解して考えてみると良いです。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる