ある村に,Aさん,Bさん,Cさん,Dさんの4人がいました.このうち2人は嘘つき族であり,このうち2人は正直族であることが分かっています.嘘つき族は必ずうそをつき,正直族は必ず正直に答えます.彼らは,論理的であり,ミスはありません.
あなたの手元には, 1,2,3,4と書かれた4枚のカードがあります.同じ数字が書かれたカードはありません.そこからランダムに選んで,一人1枚ずつ,彼らに渡しました. 彼らは,以下のように発言しました.
Aさん:私のカードは,偶数です.
Bさん:私のカードは,3か4のどちらかです.
Cさん:Bさんは,正直族です.
Dさん:私のカードは,1です.
彼らに配られた可能性のあるカードの数字と,誰が嘘つき族/正直族かを表示するプログラムを作成します.
以下が現在のコードです.
C++
1#include<iostream> 2#include<string> 3using namespace std; 4 5int card_a, card_b, card_c, card_d; 6int liar_a, liar_b, liar_c, liar_d; 7 8void output() { 9 cout << "配られたカード: "; 10 cout << card_a << ", " << card_b << ", " << card_c << ", " << card_d << ", "; 11 cout << "正直族[1],嘘つき族[0]:"; 12 cout << liar_a << ", " << liar_b << ", " << liar_c << ", " << liar_d << endl; 13} 14 15int check() { 16 17} 18 19int main() { 20 for (card_a = 1; card_a < 5; card_a++) { 21 for (card_b = 1; card_b < 5; card_b++) { 22 if (card_b != card_a) { 23 for (card_c = 1; card_c < 5; card_c++) { 24 if (card_c != card_a && card_c != card_b) { 25 for (card_d = 1; card_d < 5; card_d++) { 26 if (card_d != card_a && card_d != card_b && card_d != card_c) { 27 if (check() == true) { 28 output(); 29 } 30 } 31 } 32 } 33 } 34 } 35 } 36 } 37 cout << "プログラム終了時は何かを入力" << endl; 38 int x; cin >> x; 39 return 0; 40} 41
ここまでできたのですが,条件を満たすかどうかを判定する関数checkをどのように書けばいいのかわからないので教えてください.よろしくお願いします.
回答3件
あなたの回答
tips
プレビュー