Overload appropriate operatros for class Card so that you ca
Overload appropriate operatros for class Card so that you can compare cards based on rank:
>>> Card(\'3\', \'\') < Card(\'8\', \'\')
True
>>> Card(\'3\', \'\') > Card(\'8\', \'\')
False
>>> Card(\'3\', \'\') <= Card(\'8\', \'\')
True
>>> Card(\'3\', \'\') >= Card(\'8\', \'\')
False
Solution
#include <iostream>
using namespace std;
class Card {
private:
char rankSymbol; //can be values \'2\',...\'9\',\'1\'(for 10),\'J\',\'Q\',\'K\',\'A\'
int rank; //2,3,4....9,10,11(for J),12,13,14 (for comparison)
char color; //can be values 3,4,5,6 corresponding to symbols Heart, Diamond, Spade and Club
public:
Card(char rs, char col){ //constructor to initialize the 3 variables of a card
rankSymbol = rs;
color = col;
setRank(rs);
}
void setRankSymbol(char r){ //setter and getter methods for the variables
rank = r;
}
char getRankSymbol(){
return rank;
}
void setColor(char col){
color = col;
}
char getColor(){
return color;
}
void setRank(char rs){ //calculate the integer rank from the char rankSymbol
rank = (int)rs - (int)\'0\'; //for \'2\',\'3\',....\'9\'
switch(rs){ //for \'10\', \'A\' and face cards
case \'1\': rank = 10;
break;
case \'J\': rank = 11; //can also consider lowercase alphabets
break;
case \'Q\': rank = 12;
break;
case \'K\': rank = 13;
break;
case \'A\': rank = 14;
break;
}
}
int getRank(){
return rank;
}
void display(){
cout<<\"Card is \"<<rank<<\" of \"<<color<<endl;
}
// Overload < operator to compare Card objects.
const char* operator<(const Card& c) {
if(rank < c.rank)
return \"True\";
else
return \"False\";
}
const char* operator<=(const Card& c){
if(rank <= c.rank)
return \"True\";
else
return \"False\";
}
const char* operator>(const Card& c) {
if(rank > c.rank)
return \"True\";
else
return \"False\";
}
const char* operator>=(const Card& c) {
if(rank >= c.rank)
return \"True\";
else
return \"False\";
}
};
// Main function for the program
int main( ) {
Card card1(\'A\',(char)3); // Declare card1 of type Card
Card card2(\'6\',(char)5); // Declare card2
cout<<\"card1 < card2 = \"<<(card1<card2)<<endl;
cout<<\"card1 > card2 = \"<<(card1>card2)<<endl;
return 0;
}

