#include #include #include using namespace std; typedef struct A { char id[6]; int money; }; vector bank; int getAccount(bool create, bool druhej) { A a; scanf("%s", &(a.id)); for (int i = 0; i < bank.size(); i++) { if (strcmp(bank[i].id, a.id) == 0) return i; } if (create) { bank.push_back(a); if (druhej) return -1; else return bank.size() - 1; } else return -1; } int getMoney() { int koruny, halire; scanf("%d.%d", &koruny, &halire); return koruny * 100 + halire; } void p(int m) { int halire = m % 100; int koruny = (int)((m - halire) / 100); printf("%d.%02d", koruny, halire); } int main(void) { int accounts; scanf("%d\n", &accounts); while (accounts) { for (int i = 0; i < accounts; i++) { int koruny, halire; int a = getAccount(true, false); bank[i].money = getMoney(); } char command[20]; while (strcmp(command, "end") != 0) { if (strcmp(command, "withdraw") == 0) { int a = getAccount(false, false); int m = getMoney(); printf("withdraw "); p(m); if (a != -1) { if (m > bank[a].money) { printf(": insufficient funds\n"); } else { bank[a].money -= m; printf(": ok\n"); } } else { printf(": no such account\n"); } } else if (strcmp(command, "deposit") == 0) { int a = getAccount(false, false); int m = getMoney(); printf("deposit "); p(m); if (a != -1) { bank[a].money += m; printf(": ok\n"); } else { printf(": no such account\n"); } } else if (strcmp(command, "transfer") == 0) { int a1 = getAccount(false, false); int a2 = getAccount(false, false); int m = getMoney(); printf("transfer "); p(m); if (a1 == -1 || a2 == -1) { printf(": no such account\n"); } else if (a1 == a2) { printf(": same account\n"); } else { if (bank[a1].money < m) { printf(": insufficient funds\n"); } else { bank[a1].money -= m; bank[a2].money += m; if (bank[a1].id[5] != bank[a2].id[5]) { printf(": interbank\n"); } else printf(": ok\n"); } } } else if (strcmp(command, "create") == 0) { int a = getAccount(true, true); printf("create"); if (a == -1) { printf(": ok\n"); } else { printf(": already exists\n"); } } scanf("%s", command); } printf("end\n\n"); scanf("%d\n", &accounts); memset(command, 0, 20); bank.clear(); } printf("goodbye\n"); return 0; }