#include #include #include #include using namespace std; typedef struct A { char id[6]; unsigned long long int money; //int money; }; vector bank; int getAccount(bool create, bool druhej) { A *a; a = (A*)malloc(sizeof(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; char command[20]; scanf("%d\n", &accounts); while (accounts) { for (int i = 0; i < accounts; i++) { int a = getAccount(true, false); bank[i]->money = getMoney(); } 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); for (int i = 0; i < bank.size(); i++) free(bank[i]); bank.clear(); } printf("goodbye\n"); return 0; }