static int load_test_case(int *credit, int *num_items, int **prices) { int r, i, *p; assert(credit); assert(num_items); assert(prices); r = get_int_from_stdin(credit); if (r != 1) return -errno; r = get_int_from_stdin(num_items); if (r != 1) return -errno; p = calloc(*num_items, sizeof(*p)); if (!p) return -ENOMEM; for (i = 0; i < *num_items; ++i) { int price; r = get_int_from_stdin(&price); if (r != 1) { free(p); return -errno; } p[i] = price; } *prices = p; return 0; }
int main(void) { int i, r, test_cases, credit, num_items, *prices = NULL; char *stream_buf = NULL; size_t size; stream = open_memstream(&stream_buf, &size); r = get_int_from_stdin(&test_cases); if (r < 0) { fprintf(stderr, "Failed to determine number of test cases\n"); return EXIT_FAILURE; } for (i = 0; i < test_cases; ++i) { free(prices); prices = NULL; r = load_test_case(&credit, &num_items, &prices); if (r < 0) { free(stream_buf); fprintf(stderr, "Failed to parse test cases from stdin\n"); return EXIT_FAILURE; } solve(i + 1, credit, num_items, prices); } free(prices); printf("%s", stream_buf); free(stream_buf); return 0; }
void round_two(struct player *players, int playerc) { fprintf(stdout, "+--------------------------------------------------+\n"); fprintf(stdout, "| Round Two |\n"); fprintf(stdout, "+--------------------------------------------------+\n"); int input; int i, j; for (i = 0; i < playerc; i++) { fprintf(stdout, "%s's turn.\n", players[i].name); for (j = 0; j < AMMO; j++) { fprintf(stdout, "Shot #%d: ", j + 1); fflush(stdout); input = get_int_from_stdin(); players[i].score += (input * 2); } print_score(players[i]); } print_result(players, playerc); shuffle_winners(players, playerc); }
void round_three(struct player *players, int playerc) { fprintf(stdout, "+--------------------------------------------------+\n"); fprintf(stdout, "| Round Three |\n"); fprintf(stdout, "+--------------------------------------------------+\n"); int input; int i, j; for (i = 0; i < playerc; i++) { fprintf(stdout, "%s's turn.\n", players[i].name); for (j = 0; j < AMMO; j++) { fprintf(stdout, "Shot #%d: ", j + 1); fflush(stdout); input = get_int_from_stdin(); if (input == 5) { players[i].score += 5; } else { players[i].score += (input * 3); } } print_score(players[i]); } }