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

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

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

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

1143閲覧

2次元配列の問題です。何からしていいかわかりません

46hm

総合スコア20

C++

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/04/23 08:10

###問題
太郎が花子と一緒にトランプ遊びをしようとしたところ、52枚あるはずのカードが n 枚のカードしか手元にありません。これらの n 枚のカードを入力として、足りないカードを出力するプログラムを作成したいです。太郎が最初に持っていたトランプはジョーカーを除く52枚のカードです。
52枚のカードは、スペード、ハート、クラブ、ダイヤの4つの絵柄に分かれており、各絵柄には13のランクがあります。
(最初の行に太郎が持っているカードの枚数 n (n ≤ 52)が与えられます。
続いて n 組のカードがそれぞれ1行に与えられます。各組は1つの空白で区切られた文字と整数です。文字はカードの絵柄を表し、スペードが'S'、ハートが'H'、クラブが'C'、ダイヤが'D'で表されています。整数はそのカードのランク(1 〜 13)を表しています。)

sample input
47
S 10
S 11
S 12
S 13
H 1
H 2
S 6
S 7
S 8
S 9
H 6
H 8
H 9
H 10
H 11
H 4
H 5
S 2
S 3
S 4
S 5
H 12
H 13
C 1
C 2
D 1
D 2
D 3
D 4
D 5
D 6
D 7
C 3
C 4
C 5
C 6
C 7
C 8
C 9
C 10
C 11
C 13
D 9
D 10
D 11
D 12
D 13

sample output
S 1
H 3
H 7
C 12
D 8

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

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

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

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

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

hoshi-takanori

2020/04/23 08:27

課題頑張ってください。応援しています。
guest

回答2

0

ベストアンサー

C++

1#include <cstdint> 2#include <iostream> 3 4int main() 5{ 6 std::uint_fast16_t s, h, c, d; 7 s = h = c = d = 0x3FFE; 8 int n; 9 std::cin >> n; 10 for(; n > 0; n--){ 11 char m; 12 int r; 13 std::cin >> m >> r; 14 std::cin.ignore(); 15 decltype(s)* t; 16 switch(m){ 17 case 'S': t = &s; break; 18 case 'H': t = &h; break; 19 case 'C': t = &c; break; 20 case 'D': t = &d; break; 21 } 22 *t &= ~(1 << r); 23 } 24 auto f = [](char m, decltype(s) l){ 25 for(int r = 1; r <= 13; r++){ 26 if(l & (1 << r)){ 27 std::cout << m << " " << r << std::endl; 28 } 29 } 30 }; 31 f('S', s); 32 f('H', h); 33 f('C', c); 34 f('D', d); 35}

I think this works. No need to use an array.

投稿2020/04/23 10:41

編集2020/04/23 10:45
majiponi

総合スコア1722

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

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

0

2次元配列の問題です。

そう考えただけで1歩進んだ、とも言えます(2次元配列を使わずに処理する方法も考えられます)。

何からしていいかわかりません

まずは、2次元配列を用意するところから始めてみてはどうでしょうか。

投稿2020/04/23 08:30

maisumakun

総合スコア146018

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問