draw関数を使って引いたカードの数字1〜52を引数として、カードの数字1〜13を返す関数を作成して、合計がら21以上になるまでカードを引く行為を繰り返すプログラムを作ろうと思ってます。
a,j,q,kはそのままの数字で作ります。
実行例)
カードを引きますかY
SA
Total 1
カードを引きますかY
D3
Total 4
カードを引きますかY
S8
Total 12
カードを引きますかY
DQ
Total 24
21以上になりました。
main関数でのtotal(number)がエラーになります。
なぜでしょうか?よろしくお願いします。
C++
1コード 2``` #include<iostream> 3#include<cstdlib> 4 5using namespace std; 6 7int draw(void) 8{ 9 static int card[53]; 10 static int count=0; 11 12 srand(time(NULL)); 13 int r; 14 15 do{ 16 r = rand()%52+1; 17 card[r]++; 18 }while(card[r] > 1 && count < 52); 19 20 if(count > 52){ 21 r = 0; 22 } 23 24 count++; 25 26 return r; 27} 28 29void change(int n) 30{ 31 int suit, number; 32 33 suit = (n-1) / 13; 34 35 number = n - 13*suit; 36 37 switch(suit){ 38 case 0: cout << "S"; break; 39 case 1: cout << "H"; break; 40 case 2: cout << "D"; break; 41 case 3: cout << "C"; break; 42 } 43 44 switch(number){ 45 case 1: cout << "A"; break; 46 case 11: cout << "J"; break; 47 case 12: cout << "Q"; break; 48 case 13: cout << "K"; break; 49 default: cout << number; 50 } 51} 52 53void total(int n) 54{ 55 static int total; 56 57 total += n; 58 59 cout << "Total:"; 60 61 do{ 62 if(total<21){ 63 cout << total << endl; 64 } 65 else if(total == 21){ 66 cout << total << endl; 67 cout <<"Black Jack" << endl; 68 break; 69 }while(total<=21); 70 71 cout << total << endl; 72 cout << "21以上になりました" << endl; 73 } 74} 75 76int main() 77{ 78 char check; 79 80 int number; 81 82 static int total; 83 84 do{ 85 cout << "カードを引きますか?(Y/N):"; 86 cin >> check; 87 if(check == 'Y'){ 88 number = draw(); 89 if(number){ 90 change(number); 91 cout << endl; 92 93 total(number); 94 } 95 } 96 }while(check != 'N'); 97}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/17 12:27