Topical Information

This lab will help you practice with operator overloading (NOT mixed with classes).

Program Information

Write a program that allows the user to enter the values to assign a card's suit (commonly implemented as an enumerationHearts, Clubs, Diamonds, Spades) from the keyboard. You cannot use a menu. Your program must read the user's choice directly into the card suit variable (of an enum type). (Note: You cannot overload operators for built-in types, but enumerations are, technically, user-defined types. Therefore you can overload input/output operators for them.)

This proof of concept application will help show your programming team that the bridge game you are designing can accept bids directly from the player without having to rely on a clumsy menu interface.

An example program interaction might look something like (the parts in this color are typed by the user):

$ ./suitenter.out

                 Welcome to the Card Suit Entering Program!!!

What is the suit of your card?  hearts

You have a heart!  Don't wear it on your sleeve..!

Another card?  y

What is the suit of your card?  s

So, you have a spade!  Dig me a hole out back, won't you?

Another card?  Y

What is the suit of your card?  CLUBS

Ah, a club!  Don't beat me up!!

Another card?  y

What is the suit of your card?  diagonal

I'm sorry, I don't recognize that suit...please try again.

What is the suit of your card?  dia  Don't cut my monitor with those!

Another card?  n

Thank you for using the CSEP!!

Endeavor to have a stimulating day!


Thought Provoking Questions

  1. Does it matter if your operators are class members? Should they be const? Do they need to be friends?

  2. How can you match the word the user types against the suit names? How can you match only the number of characters entered? (Note the matches are case insensitive...)

  3. Might your program benefit from use of the string or String classes?

  4. What other operators might prove useful for your enumerated type in a full card game program?

This assignment is (Level 2.5).