#include #include #include #include using namespace std; /*typedef struct account { string number; double balance; }account;*/ typedef map account; int main() { int n; string str, op, num1, num2; double balance; account accounts; while(1) { accounts.clear(); cin >> n; if(!n) break; for(int i = 0; i < n; ++i) { cin >> str; cin >> balance; accounts[str] = balance; } cin >> op; while(op != "end") { if(op == "create") { cin >> num1; if(accounts.find(num1) == accounts.end()) { accounts[num1] = 0.0; cout << "create: ok\n"; } else { cout << "create: already exists\n"; } } else if(op == "deposit") { cin >> num1; cin >> balance; printf("deposit %1.2f: ", balance); //cout << "deposit " << balance << ": "; if(accounts.find(num1) == accounts.end()) { cout << "no such account\n"; } else { accounts[num1] += balance; cout << "ok\n"; } } else if(op == "withdraw") { cin >> num1; cin >> balance; printf("withdraw %1.2f: ", balance); //cout << "withdraw " << balance << ": "; if(accounts.find(num1) == accounts.end()) { cout << "no such account\n"; } else { if((accounts[num1] - balance) >= 0.0) { accounts[num1] -= balance; cout << "ok\n"; } else { cout << "insufficient funds\n"; } } } else if(op == "transfer") { cin >> num1; cin >> num2; cin >> balance; printf("transfer %1.2f: ", balance); //cout << "transfer " << balance << ": "; if((accounts.find(num1) == accounts.end()) || (accounts.find(num2) == accounts.end())) { cout << "no such account\n"; } else if(num1 == num2) { cout << "same account\n"; } else if((accounts[num1] - balance) < 0.0) { cout << "insufficient funds\n"; } else { accounts[num1] -= balance; accounts[num2] += balance; if(num1[5] == num2[5]) { cout << "ok\n"; } else { cout << "interbank\n"; } } } ////////// cin >> op; } cout << "end\n\n"; } cout << "goodbye\n"; return 0; }