fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define RACES 10
  5.  
  6. // race results
  7. struct raceResult
  8. {
  9. int raceNumber;
  10. int winningHorseNumber;
  11. int placeHorseNumber;
  12. int showHorseNumber;
  13. };
  14.  
  15. // assume you can access this array that contains the results
  16. struct raceResult theDailyResults[RACES] =
  17. {
  18. {1, 5, 3, 7},
  19. {2, 2, 8, 1},
  20. {3, 4, 6, 9},
  21. {4, 10, 2, 3},
  22. {5, 7, 5, 4},
  23. {6, 1, 3, 2},
  24. {7, 6, 9, 8},
  25. {8, 8, 7, 5},
  26. {9, 3, 4, 6},
  27. {10, 2, 1, 9}
  28. };
  29.  
  30. // your specific race wager
  31. struct raceWager
  32. {
  33. int raceNumber;
  34. int myHorseNumber;
  35. float myBetAmount;
  36. char betType;
  37. };
  38.  
  39. // function prototype
  40. float myHorseBet (struct raceWager myBet, struct raceResult theDailyResults[]);
  41.  
  42. // **************************************************
  43. // Function: myHorseBet
  44. //
  45. // Description: calculates winnings for a horse race bet
  46. //
  47. // Parameters: myBet - structure containing wager info
  48. // theDailyResults[] - array of race results
  49. //
  50. // Returns: winnings in dollars
  51. // returns 0 if bet is invalid or lost
  52. //
  53. // **************************************************
  54.  
  55. float myHorseBet (struct raceWager myBet, struct raceResult theDailyResults[])
  56. {
  57. int raceIndex;
  58. float winnings = 0;
  59.  
  60. // validate race number
  61. if(myBet.raceNumber < 1 || myBet.raceNumber > RACES)
  62. return 0;
  63.  
  64. // validate horse number
  65. if(myBet.myHorseNumber < 1 || myBet.myHorseNumber > 20)
  66. return 0;
  67.  
  68. // validate bet amount
  69. if(myBet.myBetAmount < 5 || myBet.myBetAmount > 1000)
  70. return 0;
  71.  
  72. raceIndex = myBet.raceNumber - 1;
  73.  
  74. // WIN
  75. if(tolower(myBet.betType) == 'w')
  76. {
  77. if(myBet.myHorseNumber == theDailyResults[raceIndex].winningHorseNumber)
  78. winnings = myBet.myBetAmount * 10;
  79. }
  80.  
  81. // PLACE
  82. else if(tolower(myBet.betType) == 'p')
  83. {
  84. if(myBet.myHorseNumber == theDailyResults[raceIndex].winningHorseNumber ||
  85. myBet.myHorseNumber == theDailyResults[raceIndex].placeHorseNumber)
  86. winnings = myBet.myBetAmount * 5;
  87. }
  88.  
  89. // SHOW
  90. else if(tolower(myBet.betType) == 's')
  91. {
  92. if(myBet.myHorseNumber == theDailyResults[raceIndex].winningHorseNumber ||
  93. myBet.myHorseNumber == theDailyResults[raceIndex].placeHorseNumber ||
  94. myBet.myHorseNumber == theDailyResults[raceIndex].showHorseNumber)
  95. winnings = myBet.myBetAmount * 3;
  96. }
  97.  
  98. else
  99. return 0;
  100.  
  101. return winnings;
  102. }
  103.  
  104. // **************************************************
  105. // Function: main
  106. //
  107. // Description: collects user input and displays winnings
  108. //
  109. // **************************************************
  110.  
  111. int main()
  112. {
  113. struct raceWager myBet;
  114. float winnings;
  115.  
  116. // input
  117. printf("Enter race number (1-10): ");
  118. scanf("%d", &myBet.raceNumber);
  119.  
  120. printf("Enter horse number (1-20): ");
  121. scanf("%d", &myBet.myHorseNumber);
  122.  
  123. printf("Enter bet amount ($5 - $1000): ");
  124. scanf("%f", &myBet.myBetAmount);
  125.  
  126. printf("Enter bet type (W/P/S): ");
  127. scanf(" %c", &myBet.betType);
  128.  
  129. // call function
  130. winnings = myHorseBet(myBet, theDailyResults);
  131.  
  132. // output
  133. if(winnings > 0)
  134. printf("\nYou won $%.2f!\n", winnings);
  135. else
  136. printf("\nYou lost or entered invalid bet.\n");
  137.  
  138. return 0;
  139. }
Success #stdin #stdout 0s 5304KB
stdin
2 2 20 S
stdout
Enter race number (1-10): Enter horse number (1-20): Enter bet amount ($5 - $1000): Enter bet type (W/P/S): 
You won $60.00!