本日の課題
2010.06.07
First card is 6 of Hearts. Second card is A of Diamonds. |
ヒント
同じカードになったらやり直す処理を用意すれば良いのですが,確率的には2回 やり直せばほぼ違うものが出るとおもいますので,カードの引き直しは2回まで とし,それでも万が一同じものが出たら,以下のように表示して終わるようにしましょ う.(私のチェックでは30回やってもアンラッキーになることはありませんでし た.)
参考までに書いておくと,演習問題2の解答例は46行でしたが,この宿題に関し ては,私が作成した解答例は96行のプログラムになりました.結構長くなります ね.
It's so unlucky today! |
/* ************************************************** */ /* */ /* 情報科学演習 C6 C7 */ /* レポート課題 */ /* 2010.6.7 */ /* */ /* ************************************************** */ /* */ /* 学生番号: */ /* */ /* 氏名: */ /* */ /* ************************************************** */ /* */ /* この行以降に解答のプログラムを書くこと */ #include <stdio.h> #include <stdlib.h> #include <time.h> main() { srand((unsigned) time(NULL)); int suit_n1, num1 ,suit_n2, num2; char *suit_c1, *num_s1, *suit_c2, *num_s2; suit_n1 = rand() % 4; num1 = rand() % 13 + 1; suit_n2 = rand() % 4; num2 = rand() % 13 + 1; if(suit_n1 == suit_n2 && num1 == num2){ suit_n2 = rand() % 4; num2 = rand() % 13 + 1; if(suit_n1 == suit_n2 && num1 == num2){ suit_n2 = rand() % 4; num2 = rand() % 13 + 1; } } if(suit_n1 == suit_n2 && num1 == num2) printf("It's so unlucky today!\n"); else { switch(suit_n1){ case 0: suit_c1 = "Spades"; break; case 1: suit_c1 = "Hearts"; break; case 2: suit_c1 = "Diamonds"; break; default: suit_c1 = "Clubs"; break; } if(num1 == 1 || num1 >= 11){ switch(num1){ case 1: num_s1 = "A"; break; case 11: num_s1 = "J"; break; case 12: num_s1 = "Q"; break; case 13: num_s1 = "K"; break; } printf("First card is %s of %s.\n", num_s1, suit_c1); } else printf("First card is %d of %s.\n", num1, suit_c1); switch(suit_n2){ case 0: suit_c2 = "Spades"; break; case 1: suit_c2 = "Hearts"; break; case 2: suit_c2 = "Diamonds"; break; default: suit_c2 = "Clubs"; break; } if(num2 == 1 || num2 >= 11){ switch(num2){ case 1: num_s2 = "A"; break; case 11: num_s2 = "J"; break; case 12: num_s2 = "Q"; break; case 13: num_s2 = "K"; break; } printf("Second card is %s of %s.\n", num_s2, suit_c2); } else printf("Second card is %d of %s.\n", num2, suit_c2); } return(0); } |