#include <stdio.h>
#include <string.h>
#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
struct raceResult theDailyResults[RACES] =
{
{1, 5, 3, 7},
{2, 2, 8, 1},
{3, 4, 6, 9},
{4, 10, 2, 3},
{5, 7, 5, 4},
{6, 1, 3, 2},
{7, 6, 9, 8},
{8, 8, 7, 5},
{9, 3, 4, 6},
{10, 2, 1, 9}
};
// 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"
};
// function prototype
float myHorseBet (struct raceWager myBet, struct raceResult theDailyResults[]);
// **************************************************
// Function: myHorseBet
//
// Description: calculates winnings for a horse race bet
//
// Parameters: myBet - structure containing wager info
// theDailyResults[] - array of race results
//
// Returns: winnings in dollars
// returns 0 if bet is invalid or lost
//
// **************************************************
float myHorseBet (struct raceWager myBet, struct raceResult theDailyResults[])
{
int raceIndex;
float winnings = 0;
// validate race number
if(myBet.raceNumber < 1 || myBet.raceNumber > RACES)
{
return 0;
}//if
// validate horse number
if(myBet.myHorseNumber < 1 || myBet.myHorseNumber > 20)
{
return 0;
}//if
// validate bet amount
if(myBet.myBetAmount < 5 || myBet.myBetAmount > 1000)
{
return 0;
}//if
raceIndex = myBet.raceNumber - 1;
// Calculate winnings if bet type is Win
{
if(myBet.myHorseNumber == theDailyResults[raceIndex].winningHorseNumber)
{
winnings = myBet.myBetAmount * 10;
}//if
}//if
// Calculate winnings if bet type is Place
else if(tolower(myBet.
betType) == 'p') {
if(myBet.myHorseNumber == theDailyResults[raceIndex].winningHorseNumber ||
myBet.myHorseNumber == theDailyResults[raceIndex].placeHorseNumber)
{
winnings = myBet.myBetAmount * 5;
}//if
}//else if
// Calculate winnings if bet type is Show
else if(tolower(myBet.
betType) == 's') {
if(myBet.myHorseNumber == theDailyResults[raceIndex].winningHorseNumber ||
myBet.myHorseNumber == theDailyResults[raceIndex].placeHorseNumber ||
myBet.myHorseNumber == theDailyResults[raceIndex].showHorseNumber)
{
winnings = myBet.myBetAmount * 3;
}//if
}//else if
else
{
return 0;
}//else
return winnings;
}//myHorseBet
// **************************************************
// Function: main
//
// Description: collects user input and displays winnings
//
// **************************************************
int main()
{
struct raceWager myBet;
float winnings;
// input
printf("Enter race number (1-10): "); scanf("%d", &myBet.
raceNumber);
printf("Enter horse number (1-20): "); scanf("%d", &myBet.
myHorseNumber);
printf("Enter bet amount ($5 - $1000): "); scanf("%f", &myBet.
myBetAmount);
printf("Enter bet type (W/P/S): "); scanf(" %c", &myBet.
betType);
// call function
winnings = myHorseBet(myBet, theDailyResults);
// output
if(winnings > 0)
printf("\nYou won $%.2f!\n", winnings
); else
printf("\nYou lost or entered invalid bet.\n");
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCiNkZWZpbmUgUkFDRVMgMTAKCi8vIHJhY2UgcmVzdWx0cwpzdHJ1Y3QgcmFjZVJlc3VsdAp7CiAgICBpbnQgcmFjZU51bWJlcjsgLy8gVGhlIHVuaXF1ZSBSYWNlIE51bWJlcgogICAgaW50IHdpbm5pbmdIb3JzZU51bWJlcjsgLy8gMXN0IHBsYWNlIGhvcnNlIG51bWJlciBmb3IgdGhlIHJhY2UKICAgIGludCBwbGFjZUhvcnNlTnVtYmVyOyAvLyAybmQgcGxhY2UgaG9yc2UgbnVtYmVyIGZvciB0aGUgcmFjZQogICAgaW50IHNob3dIb3JzZU51bWJlcjsgLy8gM3JkIHBsYWNlIGhvcnNlIG51bWJlciBmb3IgdGhlIHJhY2UKfTsKCi8vIGFzc3VtZSB5b3UgY2FuIGFjY2VzcyB0aGlzIGFycmF5IHRoYXQgY29udGFpbnMgdGhlIHJlc3VsdHMKc3RydWN0IHJhY2VSZXN1bHQgdGhlRGFpbHlSZXN1bHRzW1JBQ0VTXSA9CnsKICAgIHsxLCA1LCAzLCA3fSwKICAgIHsyLCAyLCA4LCAxfSwKICAgIHszLCA0LCA2LCA5fSwKICAgIHs0LCAxMCwgMiwgM30sCiAgICB7NSwgNywgNSwgNH0sCiAgICB7NiwgMSwgMywgMn0sCiAgICB7NywgNiwgOSwgOH0sCiAgICB7OCwgOCwgNywgNX0sCiAgICB7OSwgMywgNCwgNn0sCiAgICB7MTAsIDIsIDEsIDl9Cn07CgovLyB5b3VyIHNwZWNpZmljIHJhY2Ugd2FnZXIKc3RydWN0IHJhY2VXYWdlcgp7CiAgICBpbnQgcmFjZU51bWJlcjsgLy8gdGhlIHJhY2UgbnVtYmVyIHdoZXJlIHlvdSBiZXQgeW91ciBob3JzZQogICAgaW50IG15SG9yc2VOdW1iZXI7IC8vIHRoZSBob3JzZSB5b3UgYmV0IG9uCiAgICBmbG9hdCBteUJldEFtb3VudDsgLy8gaG93IG11Y2ggbW9uZXkgeW91IGFyZSBiZXR0aW5nCiAgICBjaGFyIGJldFR5cGU7IC8vIFcgZm9yICJXaW4iLCBQIGZvciAiUGxhY2UiLCBvciBTIGZvciAiU2hvdyIKfTsKCi8vIGZ1bmN0aW9uIHByb3RvdHlwZQpmbG9hdCBteUhvcnNlQmV0IChzdHJ1Y3QgcmFjZVdhZ2VyIG15QmV0LCBzdHJ1Y3QgcmFjZVJlc3VsdCB0aGVEYWlseVJlc3VsdHNbXSk7CgovLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLyBGdW5jdGlvbjogbXlIb3JzZUJldAovLwovLyBEZXNjcmlwdGlvbjogY2FsY3VsYXRlcyB3aW5uaW5ncyBmb3IgYSBob3JzZSByYWNlIGJldAovLwovLyBQYXJhbWV0ZXJzOiBteUJldCAtIHN0cnVjdHVyZSBjb250YWluaW5nIHdhZ2VyIGluZm8KLy8gICAgICAgICAgICAgdGhlRGFpbHlSZXN1bHRzW10gLSBhcnJheSBvZiByYWNlIHJlc3VsdHMKLy8KLy8gUmV0dXJuczogd2lubmluZ3MgaW4gZG9sbGFycwovLyAgICAgICAgICByZXR1cm5zIDAgaWYgYmV0IGlzIGludmFsaWQgb3IgbG9zdAovLwovLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKZmxvYXQgbXlIb3JzZUJldCAoc3RydWN0IHJhY2VXYWdlciBteUJldCwgc3RydWN0IHJhY2VSZXN1bHQgdGhlRGFpbHlSZXN1bHRzW10pCnsKICAgIGludCByYWNlSW5kZXg7CiAgICBmbG9hdCB3aW5uaW5ncyA9IDA7CgogICAgLy8gdmFsaWRhdGUgcmFjZSBudW1iZXIKICAgIGlmKG15QmV0LnJhY2VOdW1iZXIgPCAxIHx8IG15QmV0LnJhY2VOdW1iZXIgPiBSQUNFUykKICAgIHsKICAgICAgICByZXR1cm4gMDsKCX0vL2lmCgkKICAgIC8vIHZhbGlkYXRlIGhvcnNlIG51bWJlcgogICAgaWYobXlCZXQubXlIb3JzZU51bWJlciA8IDEgfHwgbXlCZXQubXlIb3JzZU51bWJlciA+IDIwKQogICAgewogICAgICAgIHJldHVybiAwOwoJfS8vaWYKCQogICAgLy8gdmFsaWRhdGUgYmV0IGFtb3VudAogICAgaWYobXlCZXQubXlCZXRBbW91bnQgPCA1IHx8IG15QmV0Lm15QmV0QW1vdW50ID4gMTAwMCkKICAgIHsKICAgICAgICByZXR1cm4gMDsKICAgIH0vL2lmCiAgICAKICAgIHJhY2VJbmRleCA9IG15QmV0LnJhY2VOdW1iZXIgLSAxOwoKICAgIC8vIENhbGN1bGF0ZSB3aW5uaW5ncyBpZiBiZXQgdHlwZSBpcyBXaW4KICAgIGlmKHRvbG93ZXIobXlCZXQuYmV0VHlwZSkgPT0gJ3cnKQogICAgewogICAgICAgIGlmKG15QmV0Lm15SG9yc2VOdW1iZXIgPT0gdGhlRGFpbHlSZXN1bHRzW3JhY2VJbmRleF0ud2lubmluZ0hvcnNlTnVtYmVyKQogICAgICAgIHsKICAgICAgICAgICAgd2lubmluZ3MgPSBteUJldC5teUJldEFtb3VudCAqIDEwOwogICAgICAgIH0vL2lmCiAgICB9Ly9pZgoKICAgIC8vIENhbGN1bGF0ZSB3aW5uaW5ncyBpZiBiZXQgdHlwZSBpcyBQbGFjZQogICAgZWxzZSBpZih0b2xvd2VyKG15QmV0LmJldFR5cGUpID09ICdwJykKICAgIHsKICAgICAgICBpZihteUJldC5teUhvcnNlTnVtYmVyID09IHRoZURhaWx5UmVzdWx0c1tyYWNlSW5kZXhdLndpbm5pbmdIb3JzZU51bWJlciB8fAogICAgICAgICAgIG15QmV0Lm15SG9yc2VOdW1iZXIgPT0gdGhlRGFpbHlSZXN1bHRzW3JhY2VJbmRleF0ucGxhY2VIb3JzZU51bWJlcikKICAgICAgICAgICB7CiAgICAgICAgICAgIAl3aW5uaW5ncyA9IG15QmV0Lm15QmV0QW1vdW50ICogNTsKICAgICAgICAgICB9Ly9pZgogICAgfS8vZWxzZSBpZgoKICAgIC8vIENhbGN1bGF0ZSB3aW5uaW5ncyBpZiBiZXQgdHlwZSBpcyBTaG93CiAgICBlbHNlIGlmKHRvbG93ZXIobXlCZXQuYmV0VHlwZSkgPT0gJ3MnKQogICAgewogICAgICAgIGlmKG15QmV0Lm15SG9yc2VOdW1iZXIgPT0gdGhlRGFpbHlSZXN1bHRzW3JhY2VJbmRleF0ud2lubmluZ0hvcnNlTnVtYmVyIHx8CiAgICAgICAgICAgbXlCZXQubXlIb3JzZU51bWJlciA9PSB0aGVEYWlseVJlc3VsdHNbcmFjZUluZGV4XS5wbGFjZUhvcnNlTnVtYmVyIHx8CiAgICAgICAgICAgbXlCZXQubXlIb3JzZU51bWJlciA9PSB0aGVEYWlseVJlc3VsdHNbcmFjZUluZGV4XS5zaG93SG9yc2VOdW1iZXIpCiAgICAgICAgICAgewogICAgICAgICAgICAJd2lubmluZ3MgPSBteUJldC5teUJldEFtb3VudCAqIDM7CiAgICAgICAgICAgfS8vaWYKICAgIH0vL2Vsc2UgaWYKCiAgICBlbHNlCiAgICB7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9Ly9lbHNlCgogICAgcmV0dXJuIHdpbm5pbmdzOwp9Ly9teUhvcnNlQmV0CgovLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgovLyBGdW5jdGlvbjogbWFpbgovLwovLyBEZXNjcmlwdGlvbjogY29sbGVjdHMgdXNlciBpbnB1dCBhbmQgZGlzcGxheXMgd2lubmluZ3MKLy8KLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCmludCBtYWluKCkKewogICAgc3RydWN0IHJhY2VXYWdlciBteUJldDsKICAgIGZsb2F0IHdpbm5pbmdzOwoKICAgIC8vIGlucHV0CiAgICBwcmludGYoIkVudGVyIHJhY2UgbnVtYmVyICgxLTEwKTogIik7CiAgICBzY2FuZigiJWQiLCAmbXlCZXQucmFjZU51bWJlcik7CgogICAgcHJpbnRmKCJFbnRlciBob3JzZSBudW1iZXIgKDEtMjApOiAiKTsKICAgIHNjYW5mKCIlZCIsICZteUJldC5teUhvcnNlTnVtYmVyKTsKCiAgICBwcmludGYoIkVudGVyIGJldCBhbW91bnQgKCQ1IC0gJDEwMDApOiAiKTsKICAgIHNjYW5mKCIlZiIsICZteUJldC5teUJldEFtb3VudCk7CgogICAgcHJpbnRmKCJFbnRlciBiZXQgdHlwZSAoVy9QL1MpOiAiKTsKICAgIHNjYW5mKCIgJWMiLCAmbXlCZXQuYmV0VHlwZSk7CgogICAgLy8gY2FsbCBmdW5jdGlvbgogICAgd2lubmluZ3MgPSBteUhvcnNlQmV0KG15QmV0LCB0aGVEYWlseVJlc3VsdHMpOwoKICAgIC8vIG91dHB1dAogICAgaWYod2lubmluZ3MgPiAwKQogICAgICAgIHByaW50ZigiXG5Zb3Ugd29uICQlLjJmIVxuIiwgd2lubmluZ3MpOwogICAgZWxzZQogICAgICAgIHByaW50ZigiXG5Zb3UgbG9zdCBvciBlbnRlcmVkIGludmFsaWQgYmV0LlxuIik7CgogICAgcmV0dXJuIDA7Cn0K