比较扑克牌大小(输入总是正确)

本文介绍了一个简单的卡片比较器程序,该程序使用C++编写。它能够根据卡片的类型和大小来判断两张卡片之间的大小关系,并返回较大的卡片或者相等的信息。卡片类型包括不同长度的字符串,代表了从单一字符到特定长度的组合。
#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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值