ココサブ #527(2007/07/11 04:04 GMT) [ C ] Rating1/1=1.00
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
#include <stdio.h> typedef struct { int value; /* お金の価値 */ int has; /* 何枚持っているか */ } coin_data; void pay(int expense, coin_data *pay_coin, coin_data *coin_case); int main() { int i; /* 始めに持っているお金 */ coin_data coin_case[6] = { { 1, 2}, { 5, 300}, { 10, 4}, { 50, 0}, {100, 3}, {500, 0}, }; /* 払うお金 */ coin_data pay_coin[6] = { { 1, 0}, { 5, 0}, { 10, 0}, { 50, 0}, {100, 0}, {500, 0}, }; for (i = 0; i < 6; i++) { printf("%d円玉 : %d枚\n", coin_case[i].value, coin_case[i].has); } pay(147, pay_coin, coin_case); for (i = 0; i < 6; i++) { printf("%d円玉 : %d枚\n", pay_coin[i].value, pay_coin[i].has); } return 0; } void pay(int expense, coin_data *pay_coin, coin_data *coin_case) { int current_total; int i, j; current_total = 0; while (coin_case[5].has > 0) { current_total += coin_case[5].value; coin_case[5].has--; pay_coin[5].has++; } for (i = 4; i >= 0; i--) { while (coin_case[i].has > 0) { current_total += coin_case[i].value; coin_case[i].has--; pay_coin[i].has++; } while ((current_total - coin_case[i+1].value) >= expense && pay_coin[i+1].has > 0) { current_total -= coin_case[i+1].value; coin_case[i+1].has++; pay_coin[i+1].has--; } } }
Rating1/1=1.00-0+
[ reply ]
ココサブ
#527()
[
C
]
Rating1/1=1.00
Rating1/1=1.00-0+
[ reply ]