fork download
  1. #include <stdio.h>
  2.  
  3. #define RACES 10
  4.  
  5. struct raceResult {
  6. int raceNumber;
  7. int winningHorseNumber;
  8. int placeHorseNumber;
  9. int showHorseNumber;
  10. };
  11.  
  12. struct raceWager {
  13. int raceNumber;
  14. int myHorseNumber;
  15. float myBetAmount;
  16. char betType;
  17. };
  18.  
  19. float myHorseBet(struct raceWager myBet, struct raceResult theDailyResults[]) {
  20. // Validate bet parameters
  21. if (myBet.raceNumber < 1 || myBet.raceNumber > RACES) return 0.0f;
  22. if (myBet.myHorseNumber < 1 || myBet.myHorseNumber > 20) return 0.0f;
  23. if (myBet.myBetAmount < 5.0f || myBet.myBetAmount > 1000.0f) return 0.0f;
  24. if (myBet.betType != 'W' && myBet.betType != 'P' && myBet.betType != 'S') return 0.0f;
  25.  
  26. // Find the race result
  27. struct raceResult result;
  28. int found = 0;
  29. for (int i = 0; i < RACES; i++) {
  30. if (theDailyResults[i].raceNumber == myBet.raceNumber) {
  31. result = theDailyResults[i];
  32. found = 1;
  33. break;
  34. }
  35. }
  36. if (!found) return 0.0f;
  37.  
  38. // Check if the horse wins/places/shows
  39. int isWin = (myBet.myHorseNumber == result.winningHorseNumber);
  40. int isPlace = (myBet.myHorseNumber == result.placeHorseNumber);
  41. int isShow = (myBet.myHorseNumber == result.showHorseNumber);
  42.  
  43. switch (myBet.betType) {
  44. case 'W': return isWin ? myBet.myBetAmount * 10.0f : 0.0f;
  45. case 'P': return (isWin || isPlace) ? myBet.myBetAmount * 5.0f : 0.0f;
  46. case 'S': return (isWin || isPlace || isShow) ? myBet.myBetAmount * 3.0f : 0.0f;
  47. default: return 0.0f;
  48. }
  49. }
  50.  
  51. int main() {
  52. // Step 1: Read race results from input (10 races)
  53. struct raceResult theDailyResults[RACES];
  54. for (int i = 0; i < RACES; i++) {
  55. scanf("%d %d %d %d",
  56. &theDailyResults[i].raceNumber,
  57. &theDailyResults[i].winningHorseNumber,
  58. &theDailyResults[i].placeHorseNumber,
  59. &theDailyResults[i].showHorseNumber);
  60. }
  61.  
  62. // Step 2: Read bets from input (one per line)
  63. struct raceWager bet;
  64. while (scanf("%d %d %f %c", &bet.raceNumber, &bet.myHorseNumber, &bet.myBetAmount, &bet.betType) == 4) {
  65. float winnings = myHorseBet(bet, theDailyResults);
  66. printf("Winnings: $%.2f\n", winnings);
  67. }
  68.  
  69. return 0;
  70. }
Success #stdin #stdout 0.01s 5288KB
stdin
1 3 5 7
2 10 12 14
3 5 7 2
4 1 2 3
5 20 19 18
6 6 6 6
7 8 9 10
8 15 16 17
9 4 5 6
10 11 12 13
3 5 10.0 W
3 7 5.0 P
3 2 20.0 S
3 25 10.0 W
stdout
Winnings: $100.00
Winnings: $25.00
Winnings: $60.00
Winnings: $0.00