#include #include #define tp float char acc[110][100]; int am[110]; int count; int fnd(char *c) { int t; for (t=0;t < count; t++) { if (!strcmp(acc[t], c)) return t; } return -1; } int main() { for(;;) { scanf("%i\n", &count); if (count == 0) { printf("goodbye\n"); return 0; } int t; for (t=0; t < count; t++) { float f; scanf("%s %f", acc[t], &f); am[t] = f * 100; } char buf[10000]; char buf2[10000]; tp dd; int d; for(;;) { scanf("%s", buf); if (!strcmp(buf, "withdraw")) { scanf("%s %g\n", buf, &dd); d = dd * 100; int a = fnd(buf); if (a != -1) { if (am[a] >= d) { am[a] -= d; printf("withdraw %.2f: ok\n", dd); } else { printf("withdraw: %.2f: insufficient funds\n", dd); } } else { printf("withdraw: %.2f: no such account\n", dd); } } if (!strcmp(buf,"deposit")) { scanf("%s %g\n", buf, &dd); d = dd * 100; int a = fnd(buf); if (a != -1) { am[a] += d; printf("deposit: %.2f: ok\n", dd); } else { printf("deposit: %.2f: no such account\n", dd); } } if (!strcmp(buf, "create")) { scanf("%s\n", buf); int a = fnd(buf); if (a != -1) { printf("create: already exists\n"); } else { printf("create: ok\n"); strcpy(acc[count], buf); am[count] = 0.0; count++; } } if (!strcmp(buf,"end")) { printf("end\n\n"); break; } if (!strcmp(buf, "transfer")) { scanf("%s %s %f\n", buf, buf2, &dd); d = dd * 100; int a = fnd(buf); int b = fnd(buf2); if (a == -1 || b == -1) { printf("transfer %.2f: no such account\n", dd); } else { if (a == b) { printf("transfer %.2f: same account\n", dd); } else { if (am[a] < d) { printf("transfer %.2f: insufficient funds\n", dd); } else { am[a] -= d; am[b] += d; if (buf[5] == buf2[5]) { printf("transfer %.2f: interbank\n", dd); } else { printf("transfer %.2f: ok\n", dd); } } } } } } } return 0; }