質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

808閲覧

チェックする関数(任意の関数)

Giovannaaa

総合スコア10

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/08/03 01:23

このソースコードを使って、スートを引数にとり、これまでに同じスートを引いたかどうかチェックする関数(check関数)はどのように作成したらいいのでしょうか?よろしくお願いします。```C++

#include<iostream>
#include<cstdlib>

using namespace std;

int draw(void)
{
static int card[53];
static int count=0; // 引いた枚数

srand(time(NULL)); // 乱数のタネ
int r;

do{
r = rand()%52+1; //1~52の乱数
card[r]++; //2回目以上なら2以上
}while(card[r] > 1 && count < 52);

if(count >=52){
r = 0;
}

count++;

return r;
}

void convert(int card, char* suit, int* num)
{
*suit = (card-1) / 13; //スートの計算

*num = card - 13 * *suit; //数字の計算

switch(*suit){
case 0: cout << "スートは" << "S"; break;
case 1: cout << "スートは" << "H"; break;
case 2: cout << "スートは" << "D"; break;
case 3: cout << "スートは" << "C"; break;
}
}

int main()
{
char check; //YかN

int card=0; //draw関数で引いた数字

char suits; //トランプのスート
int nums; //トランプの数字

do{
cout << "カードを引きますか?(Y/N):";
cin >> check;
if(check == 'Y'){
card = draw(); //カードを引く
convert(card,&suits,&nums);

cout << suits << ","; cout << "数字は" << nums << endl; }

}while(check != 'N');
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

C++

1... 2#include <set> // 追加 3 4int main() { 5 char check; //YかN 6 7 int card=0; //draw関数で引いた数字 8 char suits; //トランプのスート 9 int nums; //トランプの数字 10 set<char> suit_dup; // 追加 11 12 do { 13 cout << "カードを引きますか?(Y/N):"; 14 cin >> check; 15 if ( check == 'Y' ) { 16 card = draw(); //カードを引く 17 convert(card,&suits,&nums); 18 // cout << suits << ","; 19 cout << "数字は" << nums << endl; 20 if ( !suit_dup.insert(suits).second ) cout << "スートが重複しました\n"; // 追加 21 } 22 } while(check != 'N'); 23}

投稿2020/08/03 03:16

episteme

総合スコア16612

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Giovannaaa

2020/08/03 03:30

ありがとうございます。 setを使わずにするならどのようなソースコードの関数を書けばよろしいでしょうか??
episteme

2020/08/03 03:32

関数 draw() 内にある static int card[] と同じことすればいい。 重複を避けるためだから目的は同じですよね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問