In the code below, when I change the declaration of "isuit" from "char" to "int", the result differ.
I thought int and char is the same in the essense, so I cannot figure out why.
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int n, irank;
int cards[4][13] = {};
char isuit;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> isuit >> irank;
switch (isuit)
{
case 'S':
cards[0][irank - 1]++;
break;
case 'H':
cards[1][irank - 1]++;
break;
case 'C':
cards[2][irank - 1]++;
break;
case 'D':
cards[3][irank - 1]++;
break;
}
}
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 13; j++) {
if (!cards[i][j]) {
switch (i)
{
case 0:
cout << "S" << " " << j + 1 << endl;
break;
case 1:
cout << "H" << " " << j + 1 << endl;
break;
case 2:
cout << "C" << " " << j + 1 << endl;
break;
case 3:
cout << "D" << " " << j + 1 << endl;
break;
}
}
}
}
return 0;
}
Example 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
output when char:
S 1 H 3 H 7 C 12 D 8
output when int:
S 1 S 2 S 3 S 4 S 5 S 6 S 7 S 8 S 9 S 10 S 11 S 12 S 13 H 1 H 2 H 3 H 4 H 5 H 6 H 7 H 8 H 9 H 10 H 11 H 12 H 13 C 1 C 2 C 3 C 4 C 5 C 6 C 7 C 8 C 9 C 10 C 11 C 12 C 13 D 1 D 2 D 3 D 4 D 5 D 6 D 7 D 8 D 9 D 10 D 11 D 12 D 13