#include #include #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 stoi(char *s) { char *z = strdup(s); int l = strlen(s); z[l - 3] = z[ l - 2]; z[l - 2] = z[ l - 1]; z[l - 1] = z[ l - 0]; int i = atoi(z); free(z); return i; } int main() { for(;;) { scanf("%i\n", &count); if (count == 0) { printf("goodbye\n"); return 0; } int t; char bbb[100]; for (t=0; t < count; t++) { scanf("%s %s", acc[t], bbb); am[t] = stoi(bbb); } char buf[10000]; char buf2[10000]; char dd[10000]; int d; for(;;) { scanf("%s", buf); if (!strcmp(buf, "withdraw")) { scanf("%s %s\n", buf, dd); d = stoi(dd); int a = fnd(buf); if (a != -1) { if (am[a] >= d) { am[a] -= d; printf("withdraw %s: ok\n", dd); } else { printf("withdraw %s: insufficient funds\n", dd); } } else { printf("withdraw %s: no such account\n", dd); } } if (!strcmp(buf,"deposit")) { scanf("%s %s\n", buf, dd); d = stoi(dd); int a = fnd(buf); if (a != -1) { am[a] += d; printf("deposit %s: ok\n", dd); } else { printf("deposit %s: 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; count++; } } if (!strcmp(buf,"end")) { int t; /* for (t=0;t < count;t++) { printf("%s %i\n", acc[t], am[t]); }*/ printf("end\n\n"); break; } if (!strcmp(buf, "transfer")) { scanf("%s %s %s\n", buf, buf2, dd); d = stoi(dd); int a = fnd(buf); int b = fnd(buf2); if (a == -1 || b == -1) { printf("transfer %s: no such account\n", dd); } else { if (a == b) { printf("transfer %s: same account\n", dd); } else { if (am[a] < d) { printf("transfer %s: insufficient funds\n", dd); } else { am[a] -= d; am[b] += d; if (buf[5] == buf2[5]) { printf("transfer %s: interbank\n", dd); } else { printf("transfer %s: ok\n", dd); } } } } } } } return 0; }