#include #include #include #include using namespace std; int main() { map acc; int i, j, n; char an[500], line[500]; string anstr, anstr2; double bal; while (1) { acc.clear(); scanf("%d", &n); if (!n) break; for (i = 0; i < n; i++) { scanf("%s %lf", an, &bal); anstr = string(an); acc[anstr] = bal; } fgets(line, 400, stdin); while (strncmp(line, "end", 3) != 0) { if (strncmp(line, "create", 6) == 0) { anstr = string(line + 7, 6); if (acc.count(anstr) > 0) printf("create: already exists\n"); else { acc[anstr] = 0; //printf("%s\n", anstr.c_str()); printf("create: ok\n"); } } else if (strncmp(line, "deposit", 7) == 0) { //printf("here\n"); anstr = string(line + 8, 6); sscanf(line + 14, "%lf", &bal); printf("deposit %.2lf: ", bal); if (acc.count(anstr) > 0) { acc[anstr] += bal; printf("ok\n"); } else printf("no such account\n"); } else if (strncmp(line, "withdraw", 8) == 0) { anstr = string(line + 9, 6); sscanf(line + 15, "%lf", &bal); printf("withdraw %.2lf: ", bal); if (acc.count(anstr) > 0) { if (acc[anstr] >= bal) { acc[anstr] -= bal; printf("ok\n"); } else { printf("insufficient funds\n"); } } else printf("no such account\n"); } else if (strncmp(line, "transfer", 8) == 0) { anstr = string(line + 9, 6); anstr2 = string(line + 16, 6); //printf("%s:%s\n", anstr.c_str(), anstr2.c_str()); sscanf(line + 22, "%lf", &bal); printf("transfer %.2lf: ", bal); if (acc.count(anstr) <= 0 || acc.count(anstr2) <= 0) printf("no such account\n"); else if (anstr.compare(anstr2) == 0) printf("same account\n"); else { if (acc[anstr] >= bal) { acc[anstr] -= bal; acc[anstr2] += bal; if (anstr[5] != anstr2[5]) printf("interbank\n"); else printf("ok\n"); } else { printf("insufficient funds\n"); } } } fgets(line, 400, stdin); } printf("end\n\n"); } printf("goodbye\n"); return 0; }