力技による判定処理
条件演算子を使用して、次のように処理を記述できます。
・変数の説明
A -> Aさんのじゃんけんの手
B -> Bさんのじゃんけんの手
hantei -> Aさんにとっての勝ち負けの判定
0:引き分け、1:勝ち、2:負け
・判定処理
x = ((A==0)&&(B==1))||((A==1)&&(B==2))||((A==2)&&(B==0));
y = ((A==0)&&(B==2))||((A==1)&&(B==0))||((A==2)&&(B==1));
hantei = x ? 1 : (y ? 2 : 0);
・補足
xは、Aさんが勝つ組み合わせで、yは、Aさんが負ける組み合わせです。
・プログラム例
#include<stdio.h>
main()
{
int A,B,x,y,hantei; A = 0; B = 1; x = ((A==0)&&(B==1))||((A==1)&&(B==2))||((A==2)&&(B==0)); y = ((A==0)&&(B==2))||((A==1)&&(B==0))||((A==2)&&(B==1)); hantei = x ? 1 : (y ? 2 : 0); printf("A[%d] - B[%d] -> hantei[%d]\n",A,B,hantei);}
クールな判定処理
使用する変数は、「力技による判定処理」の場合と同じです。まず最初にヒントを出しますので、これをもとに処理を考えてみて下さい。
・ヒント
(1)次の図に示すように、それぞれの手の組み合わせによる勝ち負けの判定には、規則性がある。Aさんの手と同じ手の一つ右のマスがAさんが勝つ場合のBさんの手となり、逆に、一つ左がAさんが負ける場合のBさんの手となる。
表 Aさんにとっての勝ち負けの判定表
(2)余りを求める算術演算子(%)を用いた時の「1%3」の値と「4%3」の値は、いずれも「1」で等しい。
(3)算術演算子の内、+、-、%の三つの演算子を使用して、判定処理を行うことができる。
・判定処理
具体的な判定処理の記述については、この下記に白い文字で書いておきます。マウスで選択して、表示を反転させて見て下さい。
hantei = (B + 3 - A)%3;
0:引き分け、1:Aさんの勝ち、2:Aさんの負け