fork download
  1. #include <stdio.h>
  2.  
  3. #define RACES 10
  4.  
  5. // Structures
  6. struct raceResult
  7. {
  8. int raceNumber;
  9. int winningHorseNumber;
  10. int placeHorseNumber;
  11. int showHorseNumber;
  12. };
  13.  
  14. struct raceWager
  15. {
  16. int raceNumber;
  17. int myHorseNumber;
  18. float myBetAmount;
  19. char betType; // 'W', 'P', or 'S'
  20. };
  21.  
  22. // Function prototype
  23. float myHorseBet(struct raceWager myBet, struct raceResult theDailyResults[]);
  24.  
  25. // Function definition
  26. float myHorseBet(struct raceWager myBet, struct raceResult theDailyResults[])
  27. {
  28. if (myBet.raceNumber < 1 || myBet.raceNumber > RACES)
  29. {
  30. return 0.0;
  31. }
  32.  
  33. if (myBet.myHorseNumber < 1 || myBet.myHorseNumber > 20)
  34. {
  35. return 0.0;
  36. }
  37.  
  38. if (myBet.myBetAmount < 5.0 || myBet.myBetAmount > 1000.0)
  39. {
  40. return 0.0;
  41. }
  42.  
  43. if (myBet.betType != 'W' && myBet.betType != 'P' && myBet.betType != 'S')
  44. {
  45. return 0.0;
  46. }
  47.  
  48. struct raceResult result = theDailyResults[myBet.raceNumber - 1];
  49.  
  50. if (myBet.betType == 'W')
  51. {
  52. if (myBet.myHorseNumber == result.winningHorseNumber)
  53. {
  54. return myBet.myBetAmount * 10.0;
  55. }
  56. }
  57. else if (myBet.betType == 'P')
  58. {
  59. if (myBet.myHorseNumber == result.winningHorseNumber ||
  60. myBet.myHorseNumber == result.placeHorseNumber)
  61. {
  62. return myBet.myBetAmount * 5.0;
  63. }
  64. }
  65. else if (myBet.betType == 'S')
  66. {
  67. if (myBet.myHorseNumber == result.winningHorseNumber ||
  68. myBet.myHorseNumber == result.placeHorseNumber ||
  69. myBet.myHorseNumber == result.showHorseNumber)
  70. {
  71. return myBet.myBetAmount * 3.0;
  72. }
  73. }
  74.  
  75. return 0.0;
  76. }
  77.  
  78. // Main function for testing
  79. int main() {
  80. struct raceResult theDailyResults[RACES] = {
  81. {1, 5, 12, 7},
  82. {2, 3, 14, 9},
  83. {3, 1, 4, 10},
  84. {4, 6, 8, 2},
  85. {5, 13, 15, 1},
  86. {6, 2, 5, 3},
  87. {7, 10, 6, 8},
  88. {8, 7, 2, 4},
  89. {9, 20, 19, 18},
  90. {10, 9, 1, 6}
  91. };
  92.  
  93. struct raceWager myBets[] = {
  94. {1, 5, 10.0, 'W'}, // Winning horse
  95. {2, 14, 20.0, 'P'}, // Placing horse
  96. {3, 10, 5.0, 'S'}, // Show horse
  97. {4, 11, 50.0, 'W'}, // Not placed
  98. {10, 1, 5.0, 'S'} // Show horse
  99. };
  100.  
  101. int numBets = sizeof(myBets) / sizeof(myBets[0]);
  102.  
  103. for (int i = 0; i < numBets; i++) {
  104. float winnings = myHorseBet(myBets[i], theDailyResults);
  105. printf("Bet %d: Race %d, Horse %d, Bet $%.2f, Type %c => Winnings: $%.2f\n",
  106. i + 1,
  107. myBets[i].raceNumber,
  108. myBets[i].myHorseNumber,
  109. myBets[i].myBetAmount,
  110. myBets[i].betType,
  111. winnings);
  112. }
  113.  
  114. return 0;
  115. }
Success #stdin #stdout 0.01s 5320KB
stdin
Standard input is empty
stdout
Bet 1: Race 1, Horse 5, Bet $10.00, Type W => Winnings: $100.00
Bet 2: Race 2, Horse 14, Bet $20.00, Type P => Winnings: $100.00
Bet 3: Race 3, Horse 10, Bet $5.00, Type S => Winnings: $15.00
Bet 4: Race 4, Horse 11, Bet $50.00, Type W => Winnings: $0.00
Bet 5: Race 10, Horse 1, Bet $5.00, Type S => Winnings: $15.00