#include <stdio.h>
#include <string.h>
#define RACES 10
// race results
struct raceResult
{
int raceNumber;
int winningHorseNumber;
int placeHorseNumber;
int showHorseNumber;
};
// 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;
int myHorseNumber;
float myBetAmount;
char betType;
};
// 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;
// validate horse number
if(myBet.myHorseNumber < 1 || myBet.myHorseNumber > 20)
return 0;
// validate bet amount
if(myBet.myBetAmount < 5 || myBet.myBetAmount > 1000)
return 0;
raceIndex = myBet.raceNumber - 1;
// WIN
{
if(myBet.myHorseNumber == theDailyResults[raceIndex].winningHorseNumber)
winnings = myBet.myBetAmount * 10;
}
// PLACE
else if(tolower(myBet.
betType) == 'p') {
if(myBet.myHorseNumber == theDailyResults[raceIndex].winningHorseNumber ||
myBet.myHorseNumber == theDailyResults[raceIndex].placeHorseNumber)
winnings = myBet.myBetAmount * 5;
}
// 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;
}
else
return 0;
return winnings;
}
// **************************************************
// 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+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCiNkZWZpbmUgUkFDRVMgMTAKCi8vIHJhY2UgcmVzdWx0cwpzdHJ1Y3QgcmFjZVJlc3VsdAp7CiAgICBpbnQgcmFjZU51bWJlcjsKICAgIGludCB3aW5uaW5nSG9yc2VOdW1iZXI7CiAgICBpbnQgcGxhY2VIb3JzZU51bWJlcjsKICAgIGludCBzaG93SG9yc2VOdW1iZXI7Cn07CgovLyBhc3N1bWUgeW91IGNhbiBhY2Nlc3MgdGhpcyBhcnJheSB0aGF0IGNvbnRhaW5zIHRoZSByZXN1bHRzCnN0cnVjdCByYWNlUmVzdWx0IHRoZURhaWx5UmVzdWx0c1tSQUNFU10gPQp7CiAgICB7MSwgNSwgMywgN30sCiAgICB7MiwgMiwgOCwgMX0sCiAgICB7MywgNCwgNiwgOX0sCiAgICB7NCwgMTAsIDIsIDN9LAogICAgezUsIDcsIDUsIDR9LAogICAgezYsIDEsIDMsIDJ9LAogICAgezcsIDYsIDksIDh9LAogICAgezgsIDgsIDcsIDV9LAogICAgezksIDMsIDQsIDZ9LAogICAgezEwLCAyLCAxLCA5fQp9OwoKLy8geW91ciBzcGVjaWZpYyByYWNlIHdhZ2VyCnN0cnVjdCByYWNlV2FnZXIKewogICAgaW50IHJhY2VOdW1iZXI7CiAgICBpbnQgbXlIb3JzZU51bWJlcjsKICAgIGZsb2F0IG15QmV0QW1vdW50OwogICAgY2hhciBiZXRUeXBlOwp9OwoKLy8gZnVuY3Rpb24gcHJvdG90eXBlCmZsb2F0IG15SG9yc2VCZXQgKHN0cnVjdCByYWNlV2FnZXIgbXlCZXQsIHN0cnVjdCByYWNlUmVzdWx0IHRoZURhaWx5UmVzdWx0c1tdKTsKCi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vIEZ1bmN0aW9uOiBteUhvcnNlQmV0Ci8vCi8vIERlc2NyaXB0aW9uOiBjYWxjdWxhdGVzIHdpbm5pbmdzIGZvciBhIGhvcnNlIHJhY2UgYmV0Ci8vCi8vIFBhcmFtZXRlcnM6IG15QmV0IC0gc3RydWN0dXJlIGNvbnRhaW5pbmcgd2FnZXIgaW5mbwovLyAgICAgICAgICAgICB0aGVEYWlseVJlc3VsdHNbXSAtIGFycmF5IG9mIHJhY2UgcmVzdWx0cwovLwovLyBSZXR1cm5zOiB3aW5uaW5ncyBpbiBkb2xsYXJzCi8vICAgICAgICAgIHJldHVybnMgMCBpZiBiZXQgaXMgaW52YWxpZCBvciBsb3N0Ci8vCi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpmbG9hdCBteUhvcnNlQmV0IChzdHJ1Y3QgcmFjZVdhZ2VyIG15QmV0LCBzdHJ1Y3QgcmFjZVJlc3VsdCB0aGVEYWlseVJlc3VsdHNbXSkKewogICAgaW50IHJhY2VJbmRleDsKICAgIGZsb2F0IHdpbm5pbmdzID0gMDsKCiAgICAvLyB2YWxpZGF0ZSByYWNlIG51bWJlcgogICAgaWYobXlCZXQucmFjZU51bWJlciA8IDEgfHwgbXlCZXQucmFjZU51bWJlciA+IFJBQ0VTKQogICAgICAgIHJldHVybiAwOwoKICAgIC8vIHZhbGlkYXRlIGhvcnNlIG51bWJlcgogICAgaWYobXlCZXQubXlIb3JzZU51bWJlciA8IDEgfHwgbXlCZXQubXlIb3JzZU51bWJlciA+IDIwKQogICAgICAgIHJldHVybiAwOwoKICAgIC8vIHZhbGlkYXRlIGJldCBhbW91bnQKICAgIGlmKG15QmV0Lm15QmV0QW1vdW50IDwgNSB8fCBteUJldC5teUJldEFtb3VudCA+IDEwMDApCiAgICAgICAgcmV0dXJuIDA7CgogICAgcmFjZUluZGV4ID0gbXlCZXQucmFjZU51bWJlciAtIDE7CgogICAgLy8gV0lOCiAgICBpZih0b2xvd2VyKG15QmV0LmJldFR5cGUpID09ICd3JykKICAgIHsKICAgICAgICBpZihteUJldC5teUhvcnNlTnVtYmVyID09IHRoZURhaWx5UmVzdWx0c1tyYWNlSW5kZXhdLndpbm5pbmdIb3JzZU51bWJlcikKICAgICAgICAgICAgd2lubmluZ3MgPSBteUJldC5teUJldEFtb3VudCAqIDEwOwogICAgfQoKICAgIC8vIFBMQUNFCiAgICBlbHNlIGlmKHRvbG93ZXIobXlCZXQuYmV0VHlwZSkgPT0gJ3AnKQogICAgewogICAgICAgIGlmKG15QmV0Lm15SG9yc2VOdW1iZXIgPT0gdGhlRGFpbHlSZXN1bHRzW3JhY2VJbmRleF0ud2lubmluZ0hvcnNlTnVtYmVyIHx8CiAgICAgICAgICAgbXlCZXQubXlIb3JzZU51bWJlciA9PSB0aGVEYWlseVJlc3VsdHNbcmFjZUluZGV4XS5wbGFjZUhvcnNlTnVtYmVyKQogICAgICAgICAgICB3aW5uaW5ncyA9IG15QmV0Lm15QmV0QW1vdW50ICogNTsKICAgIH0KCiAgICAvLyBTSE9XCiAgICBlbHNlIGlmKHRvbG93ZXIobXlCZXQuYmV0VHlwZSkgPT0gJ3MnKQogICAgewogICAgICAgIGlmKG15QmV0Lm15SG9yc2VOdW1iZXIgPT0gdGhlRGFpbHlSZXN1bHRzW3JhY2VJbmRleF0ud2lubmluZ0hvcnNlTnVtYmVyIHx8CiAgICAgICAgICAgbXlCZXQubXlIb3JzZU51bWJlciA9PSB0aGVEYWlseVJlc3VsdHNbcmFjZUluZGV4XS5wbGFjZUhvcnNlTnVtYmVyIHx8CiAgICAgICAgICAgbXlCZXQubXlIb3JzZU51bWJlciA9PSB0aGVEYWlseVJlc3VsdHNbcmFjZUluZGV4XS5zaG93SG9yc2VOdW1iZXIpCiAgICAgICAgICAgIHdpbm5pbmdzID0gbXlCZXQubXlCZXRBbW91bnQgKiAzOwogICAgfQoKICAgIGVsc2UKICAgICAgICByZXR1cm4gMDsKCiAgICByZXR1cm4gd2lubmluZ3M7Cn0KCi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi8vIEZ1bmN0aW9uOiBtYWluCi8vCi8vIERlc2NyaXB0aW9uOiBjb2xsZWN0cyB1c2VyIGlucHV0IGFuZCBkaXNwbGF5cyB3aW5uaW5ncwovLwovLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKaW50IG1haW4oKQp7CiAgICBzdHJ1Y3QgcmFjZVdhZ2VyIG15QmV0OwogICAgZmxvYXQgd2lubmluZ3M7CgogICAgLy8gaW5wdXQKICAgIHByaW50ZigiRW50ZXIgcmFjZSBudW1iZXIgKDEtMTApOiAiKTsKICAgIHNjYW5mKCIlZCIsICZteUJldC5yYWNlTnVtYmVyKTsKCiAgICBwcmludGYoIkVudGVyIGhvcnNlIG51bWJlciAoMS0yMCk6ICIpOwogICAgc2NhbmYoIiVkIiwgJm15QmV0Lm15SG9yc2VOdW1iZXIpOwoKICAgIHByaW50ZigiRW50ZXIgYmV0IGFtb3VudCAoJDUgLSAkMTAwMCk6ICIpOwogICAgc2NhbmYoIiVmIiwgJm15QmV0Lm15QmV0QW1vdW50KTsKCiAgICBwcmludGYoIkVudGVyIGJldCB0eXBlIChXL1AvUyk6ICIpOwogICAgc2NhbmYoIiAlYyIsICZteUJldC5iZXRUeXBlKTsKCiAgICAvLyBjYWxsIGZ1bmN0aW9uCiAgICB3aW5uaW5ncyA9IG15SG9yc2VCZXQobXlCZXQsIHRoZURhaWx5UmVzdWx0cyk7CgogICAgLy8gb3V0cHV0CiAgICBpZih3aW5uaW5ncyA+IDApCiAgICAgICAgcHJpbnRmKCJcbllvdSB3b24gJCUuMmYhXG4iLCB3aW5uaW5ncyk7CiAgICBlbHNlCiAgICAgICAgcHJpbnRmKCJcbllvdSBsb3N0IG9yIGVudGVyZWQgaW52YWxpZCBiZXQuXG4iKTsKCiAgICByZXR1cm4gMDsKfQ==