#include <iostream>
#include <string>
using namespace std;
class CompareCards
{
static int checkcardstype(string& str);
static char checkcardssize(char s);
public:
const static string& compare(string& first,string & second);
};
const string& err="ERROR";
const string& equ="EQUEL";
int CompareCards::checkcardstype(string& card)
{
switch(card.size())
{
case 1:
return 1;
case 2:
return 1;
case 3:
return 2;
case 5:
if(card[0]=='1')
return 2;
else
return 3;
case 8:
return 3;
case 9:
return 4;
case 10:
return 4;
case 7:
return 9;
case 11:
if(card[0]=='1')
return 9;
else
return 19;
default:
return 0;
}
}
char CompareCards::checkcardssize(char s)
{
switch(s)
{
case '1':
return 'a';
case 'J':
return 'b';
case 'Q':
return 'c';
case 'K':
return 'd';
case 'A':
return 'e';
case '2':
return 'f';
default:
return s;
}
}
const string& CompareCards::compare(string& first, string& second)
{
if(!CompareCards::checkcardstype(first) || !CompareCards::checkcardstype(second))
return err;
if(CompareCards::checkcardstype(first)==CompareCards::checkcardstype(second))
{
if(CompareCards::checkcardssize(first[0])>CompareCards::checkcardssize(second[0]))
{
return first;
}else if(CompareCards::checkcardssize(first[0])<CompareCards::checkcardssize(second[0]))
{
return second;
}else
{
return equ;
}
}
if(CompareCards::checkcardstype(first)+CompareCards::checkcardstype(second)<8)
{
return err;
}
if(CompareCards::checkcardstype(first)>CompareCards::checkcardstype(second))
{
return first;
}else
{
return second;
}
}
int main()
{
string cards[2];
string in;
getline(cin,in);
int i=0;
while(in[i]!='-')
{
++i;
}
cards[0].assign(in,0,i);
cards[1].assign(in,i+1,string::npos);
cout << CompareCards::compare(cards[0],cards[1])<< endl;
return 0;
}比较扑克牌大小(输入总是正确)
最新推荐文章于 2023-10-01 15:10:52 发布
本文介绍了一个简单的卡片比较器程序,该程序使用C++编写。它能够根据卡片的类型和大小来判断两张卡片之间的大小关系,并返回较大的卡片或者相等的信息。卡片类型包括不同长度的字符串,代表了从单一字符到特定长度的组合。
4098

被折叠的 条评论
为什么被折叠?



