#include <iostream>
using namespace std;
#define RACES 10
// race results
struct raceResult
{
int raceNumber; // The unique Race Number
int winningHorseNumber; // 1st place horse number for the race
int placeHorseNumber; // 2nd place horse number for the race
int showHorseNumber; // 3rd place horse number for the race
};
// assume you can access this array that contains the results of horse races for a given day
struct raceResult theDailyResults[RACES];
// your specific race wager
struct raceWager
{
int raceNumber; // the race number where you bet your horse
int myHorseNumber; // the horse you bet on
float myBetAmount; // how much money you are betting
char betType; // W for "Win", P for "Place", or S for "Show"
};
// call this function and pass in your bet to see how much you won ... if you lost or there
// is an error  in your wager info, it just returns zero
float myHorseBet (struct raceWager myBet, struct raceResult theDailyResults[]){
if (myBet.raceNumber < 1 || myBet.raceNumber > 10)
return 0; // invalid if not between 0 - 10 races daily
if (myBet.myHorseNumber < 1 || myBet.myHorseNumber > 20)
return 0; // invalid if horse number is not 1 - 20
if (myBet.myBetAmount < 5 || myBet.myBetAmount > 1000)
return 0; // bet amount must be min of $5, max of $1000
if (myBet.betType != 'W' && myBet.betType != 'P' && myBet.betType != 'S')
return 0; // reject if not W, P, or S
// race specific results of the day
struct raceResult result = theDailyResults[myBet.raceNumber - 1];
if ((myBet.betType == 'W') && (myBet.myHorseNumber == result.winningHorseNumber))
return myBet.myBetAmount * 10;
else if (myBet.betType == 'P'){
if ((myBet.myHorseNumber == result.winningHorseNumber) || (myBet.myHorseNumber == result.placeHorseNumber))
return myBet.myBetAmount * 5;
}
else if (myBet.betType == 'S') {
if ((myBet.myHorseNumber == result.winningHorseNumber) || (myBet.myHorseNumber == result.placeHorseNumber) || (myBet.myHorseNumber == result.showHorseNumber))
return myBet.myBetAmount * 3;
}
return 0;
}
int main() {
// Sample race results
struct raceResult theDailyResults[RACES] = {
{1, 5, 12, 9},
{2, 3, 7, 14},
{3, 10, 4, 2},
{4, 1, 6, 13},
{5, 17, 2, 8},
{6, 9, 11, 20},
{7, 16, 5, 3},
{8, 8, 10, 4},
{9, 13, 15, 7},
{10, 6, 18, 19}
};
// Sample bets
struct raceWager bet1 = {1, 5, 10.0, 'W'}; // should win: 10 x $10 = $100
struct raceWager bet2 = {2, 7, 20.0, 'P'}; // should win: 5 x $20 = $100
struct raceWager bet3 = {3, 2, 5.0, 'S'}; // should win: 3 x $5 = $15
struct raceWager bet4 = {4, 20, 50.0, 'P'}; // should lose
struct raceWager bet5 = {11, 5, 10.0, 'W'}; // invalid race number
// Print results
printf("Bet 1 Winnings: $%.2f\n", myHorseBet(bet1, theDailyResults));
printf("Bet 2 Winnings: $%.2f\n", myHorseBet(bet2, theDailyResults));
printf("Bet 3 Winnings: $%.2f\n", myHorseBet(bet3, theDailyResults));
printf("Bet 4 Winnings: $%.2f\n", myHorseBet(bet4, theDailyResults));
printf("Bet 5 Winnings: $%.2f\n", myHorseBet(bet5, theDailyResults));
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBSQUNFUyAxMAoKLy8gcmFjZSByZXN1bHRzCnN0cnVjdCByYWNlUmVzdWx0CnsKICAgIGludCByYWNlTnVtYmVyOyAgICAgICAgICAgLy8gVGhlIHVuaXF1ZSBSYWNlIE51bWJlcgogICAgaW50IHdpbm5pbmdIb3JzZU51bWJlcjsgICAvLyAxc3QgcGxhY2UgaG9yc2UgbnVtYmVyIGZvciB0aGUgcmFjZQogICAgaW50IHBsYWNlSG9yc2VOdW1iZXI7ICAgICAvLyAybmQgcGxhY2UgaG9yc2UgbnVtYmVyIGZvciB0aGUgcmFjZQogICAgaW50IHNob3dIb3JzZU51bWJlcjsgICAgICAvLyAzcmQgcGxhY2UgaG9yc2UgbnVtYmVyIGZvciB0aGUgcmFjZQp9OwoKCi8vIGFzc3VtZSB5b3UgY2FuIGFjY2VzcyB0aGlzIGFycmF5IHRoYXQgY29udGFpbnMgdGhlIHJlc3VsdHMgb2YgaG9yc2UgcmFjZXMgZm9yIGEgZ2l2ZW4gZGF5CnN0cnVjdCByYWNlUmVzdWx0IHRoZURhaWx5UmVzdWx0c1tSQUNFU107CgovLyB5b3VyIHNwZWNpZmljIHJhY2Ugd2FnZXIKc3RydWN0IHJhY2VXYWdlcgp7CiAgICBpbnQgcmFjZU51bWJlcjsgICAgICAvLyB0aGUgcmFjZSBudW1iZXIgd2hlcmUgeW91IGJldCB5b3VyIGhvcnNlCiAgICBpbnQgbXlIb3JzZU51bWJlcjsgICAvLyB0aGUgaG9yc2UgeW91IGJldCBvbgogICAgZmxvYXQgbXlCZXRBbW91bnQ7ICAgLy8gaG93IG11Y2ggbW9uZXkgeW91IGFyZSBiZXR0aW5nCiAgICBjaGFyIGJldFR5cGU7ICAgICAgICAvLyBXIGZvciAiV2luIiwgUCBmb3IgIlBsYWNlIiwgb3IgUyBmb3IgIlNob3ciCn07CgovLyBjYWxsIHRoaXMgZnVuY3Rpb24gYW5kIHBhc3MgaW4geW91ciBiZXQgdG8gc2VlIGhvdyBtdWNoIHlvdSB3b24gLi4uIGlmIHlvdSBsb3N0IG9yIHRoZXJlCi8vIGlzIGFuIGVycm9yIMOD4oCaIGluIHlvdXIgd2FnZXIgaW5mbywgaXQganVzdCByZXR1cm5zIHplcm8KZmxvYXQgbXlIb3JzZUJldCAoc3RydWN0IHJhY2VXYWdlciBteUJldCwgc3RydWN0IHJhY2VSZXN1bHQgdGhlRGFpbHlSZXN1bHRzW10pewoJaWYgKG15QmV0LnJhY2VOdW1iZXIgPCAxIHx8IG15QmV0LnJhY2VOdW1iZXIgPiAxMCkKCQlyZXR1cm4gMDsgLy8gaW52YWxpZCBpZiBub3QgYmV0d2VlbiAwIC0gMTAgcmFjZXMgZGFpbHkKCWlmIChteUJldC5teUhvcnNlTnVtYmVyIDwgMSB8fCBteUJldC5teUhvcnNlTnVtYmVyID4gMjApCgkJcmV0dXJuIDA7IC8vIGludmFsaWQgaWYgaG9yc2UgbnVtYmVyIGlzIG5vdCAxIC0gMjAgCglpZiAobXlCZXQubXlCZXRBbW91bnQgPCA1IHx8IG15QmV0Lm15QmV0QW1vdW50ID4gMTAwMCkKCQlyZXR1cm4gMDsgLy8gYmV0IGFtb3VudCBtdXN0IGJlIG1pbiBvZiAkNSwgbWF4IG9mICQxMDAwCglpZiAobXlCZXQuYmV0VHlwZSAhPSAnVycgJiYgbXlCZXQuYmV0VHlwZSAhPSAnUCcgJiYgbXlCZXQuYmV0VHlwZSAhPSAnUycpCgkJcmV0dXJuIDA7IC8vIHJlamVjdCBpZiBub3QgVywgUCwgb3IgUyAKCQoJLy8gcmFjZSBzcGVjaWZpYyByZXN1bHRzIG9mIHRoZSBkYXkKCXN0cnVjdCByYWNlUmVzdWx0IHJlc3VsdCA9IHRoZURhaWx5UmVzdWx0c1tteUJldC5yYWNlTnVtYmVyIC0gMV07IAoJaWYgKChteUJldC5iZXRUeXBlID09ICdXJykgJiYgKG15QmV0Lm15SG9yc2VOdW1iZXIgPT0gcmVzdWx0Lndpbm5pbmdIb3JzZU51bWJlcikpCgkJcmV0dXJuIG15QmV0Lm15QmV0QW1vdW50ICogMTA7IAoJZWxzZSBpZiAobXlCZXQuYmV0VHlwZSA9PSAnUCcpewoJCWlmICgobXlCZXQubXlIb3JzZU51bWJlciA9PSByZXN1bHQud2lubmluZ0hvcnNlTnVtYmVyKSB8fCAobXlCZXQubXlIb3JzZU51bWJlciA9PSByZXN1bHQucGxhY2VIb3JzZU51bWJlcikpCgkJCXJldHVybiBteUJldC5teUJldEFtb3VudCAqIDU7IAoJfQoJZWxzZSBpZiAobXlCZXQuYmV0VHlwZSA9PSAnUycpIHsKCQlpZiAoKG15QmV0Lm15SG9yc2VOdW1iZXIgPT0gcmVzdWx0Lndpbm5pbmdIb3JzZU51bWJlcikgfHwgKG15QmV0Lm15SG9yc2VOdW1iZXIgPT0gcmVzdWx0LnBsYWNlSG9yc2VOdW1iZXIpIHx8IChteUJldC5teUhvcnNlTnVtYmVyID09IHJlc3VsdC5zaG93SG9yc2VOdW1iZXIpKQoJCQlyZXR1cm4gbXlCZXQubXlCZXRBbW91bnQgKiAzOyAKCX0KCQoJcmV0dXJuIDA7IAp9CgppbnQgbWFpbigpIHsKICAgIC8vIFNhbXBsZSByYWNlIHJlc3VsdHMKICAgIHN0cnVjdCByYWNlUmVzdWx0IHRoZURhaWx5UmVzdWx0c1tSQUNFU10gPSB7CiAgICAgICAgezEsIDUsIDEyLCA5fSwKICAgICAgICB7MiwgMywgNywgMTR9LAogICAgICAgIHszLCAxMCwgNCwgMn0sCiAgICAgICAgezQsIDEsIDYsIDEzfSwKICAgICAgICB7NSwgMTcsIDIsIDh9LAogICAgICAgIHs2LCA5LCAxMSwgMjB9LAogICAgICAgIHs3LCAxNiwgNSwgM30sCiAgICAgICAgezgsIDgsIDEwLCA0fSwKICAgICAgICB7OSwgMTMsIDE1LCA3fSwKICAgICAgICB7MTAsIDYsIDE4LCAxOX0KICAgIH07CgogICAgLy8gU2FtcGxlIGJldHMKICAgIHN0cnVjdCByYWNlV2FnZXIgYmV0MSA9IHsxLCA1LCAxMC4wLCAnVyd9OyAgLy8gc2hvdWxkIHdpbjogMTAgeCAkMTAgPSAkMTAwCiAgICBzdHJ1Y3QgcmFjZVdhZ2VyIGJldDIgPSB7MiwgNywgMjAuMCwgJ1AnfTsgIC8vIHNob3VsZCB3aW46IDUgeCAkMjAgPSAkMTAwCiAgICBzdHJ1Y3QgcmFjZVdhZ2VyIGJldDMgPSB7MywgMiwgNS4wLCAnUyd9OyAgIC8vIHNob3VsZCB3aW46IDMgeCAkNSA9ICQxNQogICAgc3RydWN0IHJhY2VXYWdlciBiZXQ0ID0gezQsIDIwLCA1MC4wLCAnUCd9OyAvLyBzaG91bGQgbG9zZQogICAgc3RydWN0IHJhY2VXYWdlciBiZXQ1ID0gezExLCA1LCAxMC4wLCAnVyd9OyAvLyBpbnZhbGlkIHJhY2UgbnVtYmVyCgogICAgLy8gUHJpbnQgcmVzdWx0cwogICAgcHJpbnRmKCJCZXQgMSBXaW5uaW5nczogJCUuMmZcbiIsIG15SG9yc2VCZXQoYmV0MSwgdGhlRGFpbHlSZXN1bHRzKSk7CiAgICBwcmludGYoIkJldCAyIFdpbm5pbmdzOiAkJS4yZlxuIiwgbXlIb3JzZUJldChiZXQyLCB0aGVEYWlseVJlc3VsdHMpKTsKICAgIHByaW50ZigiQmV0IDMgV2lubmluZ3M6ICQlLjJmXG4iLCBteUhvcnNlQmV0KGJldDMsIHRoZURhaWx5UmVzdWx0cykpOwogICAgcHJpbnRmKCJCZXQgNCBXaW5uaW5nczogJCUuMmZcbiIsIG15SG9yc2VCZXQoYmV0NCwgdGhlRGFpbHlSZXN1bHRzKSk7CiAgICBwcmludGYoIkJldCA1IFdpbm5pbmdzOiAkJS4yZlxuIiwgbXlIb3JzZUJldChiZXQ1LCB0aGVEYWlseVJlc3VsdHMpKTsKCiAgICByZXR1cm4gMDsKfQ==