#include #include struct konto { int balance; int exists; }; #define KONT 10000 #define BANK 10 struct konto banky[10][10000] = {{{0,0}}}; int main(void) { int a; int k, b, k1, b1, x, y; char cmd[10]; scanf("%d", &a); while (a) { for (; a; a--) { if (scanf("%d/%d %d.%d", &k, &b, &x, &y) != 4) { for(;;); } banky[b][k].exists = 1; banky[b][k].balance = x*100+y; } do { scanf("%s", cmd); if (!strcmp(cmd, "create")) { if(scanf("%d/%d", &k, &b) != 2) { for (;;); } if (banky[b][k].exists) { printf("create: already exists\n"); } else { banky[b][k].exists = 1; banky[b][k].balance = 0; printf("create: ok\n"); } } else if (!strcmp(cmd, "deposit")) { if(scanf("%d/%d %d.%d", &k, &b, &x, &y) != 4) { for(;;); } if (!banky[b][k].exists) { printf("deposit %d.%02d: no such account\n", x, y); } else { banky[b][k].balance += x*100+y; printf("deposit %d.%02d: ok\n", x, y); } } else if (!strcmp(cmd, "withdraw")) { if(scanf("%d/%d %d.%d", &k, &b, &x, &y)!=4){ for(;;); } if (!banky[b][k].exists) { printf("withdraw %d.%02d: no such account\n", x, y); } else if (banky[b][k].balance < x*100+y) { printf("withdraw %d.%02d: insufficient funds\n", x, y); } else { banky[b][k].balance -= x*100+y; printf("withdraw %d.%02d: ok\n", x, y); } } else if (!strcmp(cmd, "transfer")) { if(scanf("%d/%d %d/%d %d.%d", &k, &b, &k1, &b1, &x, &y)!=6){ for(;;); } if (!banky[b][k].exists || !banky[b1][k1].exists) { printf("transfer %d.%02d: no such account\n", x, y); } else if (b == b1 && k == k1) { printf("transfer %d.%02d: same account\n", x, y); } else if (banky[b][k].balance < x*100+y) { printf("transfer %d.%02d: insufficient funds\n", x, y); } else { banky[b][k].balance -= x*100+y; banky[b1][k1].balance += x*100+y; if (b == b1) { printf("transfer %d.%02d: ok\n", x, y); } else { printf("transfer %d.%02d: interbank\n", x, y); } } } else if (!strcmp(cmd, "end")) { memset(banky, 0, sizeof(banky)); printf("end\n\n"); break; } } while(1); scanf("%d", &a); } printf("goodbye\n"); return 0; }