cardという配列を作り全てfalseで初期化します。その後、入力される文字によってS→0、H→1、C→2、D→3というふうにswitch文で場合分けをしてcardの配列に数字と共に格納していきます。最後にfalseのままの配列の時だけ(=入力されていない)出力する、という解放で解いてみたのですがいまいちうまく実行されません。
おかしいのはswitch文かなーと思ってはいるんですが、コンパイルも通ってしまていてソース見る限り特に間違いがあるように思えなくて困っています。どなたかアドバイスお願いいたします。
#include <iostream>
using namespace std;
int main(){
int n=0,num=0;
char c;
bool card[4][13];
cin>>n; //手元のカードの数
for(int i=0; i<4; i++){
for(int j=0; j<13; j++){
card[i][j]=false;
}
}
for(int i=0; i<n; i++){
cin>>c>>num;
switch(c){
case 'S': card[0][num-1]=true;
case 'H': card[1][num-1]=true;
case 'C': card[2][num-1]=true;
case 'D': card[3][num-1]=true;
}
}
for(int i=0; i<4; i++){
for(int j; j<13; j++){
if(card[i][j]==false){
if(i==0) cout<<'S'<<" "<<j+1<<endl;
if(i==1) cout<<'H'<<" "<<j+1<<endl;
if(i==2) cout<<'C'<<" "<<j+1<<endl;
if(i==3) cout<<'D'<<" "<<j+1<<endl;
//cout<<" "<<j+1<<endl;
}
}
}
return 0;
}