#include #include using namespace std; map Ucty; char getBankCode(string s) { return s[s.length() -1]; } bool readUcty() { int n; cin >> n; if (n == 0) return false; while (n--> 0) { string ucet; double suma; cin >> ucet >> suma; Ucty.insert(make_pair(ucet, suma)); //cout << ucet << suma < &m, string key) { return (m.find(key) != m.end()); } void printOutput(string instruction, double suma, char * msg) { cout << instruction << " "; printf("%.2f", suma); cout << ": " << msg << endl; } void printOutput(string instruction, char *msg) { cout << instruction << ": " << msg << endl; } int main() { while (readUcty()) { string instruction; cin >> instruction; while (instruction != "end") { string ucet, ucet2; double suma; if (instruction == "withdraw") { cin >> ucet >> suma; if (keyExists(Ucty, ucet)) { if (Ucty[ucet] > suma) { Ucty[ucet] += suma; printOutput(instruction, suma, "ok"); } else { printOutput(instruction, suma, "insufficient funds"); } } else { printOutput(instruction, suma, "no such account"); } } else if (instruction == "deposit") { cin >> ucet >> suma; if (keyExists(Ucty, ucet)) { Ucty[ucet] += suma; printOutput(instruction, suma, "ok"); } else printOutput(instruction, suma, "no such account"); } else if (instruction == "create") { cin >> ucet; if (keyExists(Ucty, ucet)) printOutput(instruction, "already exists"); else { Ucty[ucet] = 0; printOutput(instruction, "ok"); } } else if (instruction == "transfer") { cin >> ucet >> ucet2 >> suma; if (ucet == ucet2) printOutput(instruction, suma, "same account"); else if ((!keyExists(Ucty, ucet)) || (!keyExists(Ucty, ucet2))) printOutput(instruction, suma, "no such account"); else { if (Ucty[ucet] < suma) printOutput(instruction, suma, "insufficient funds"); else { Ucty[ucet] -= suma; Ucty[ucet2] += suma; if (getBankCode(ucet) != getBankCode(ucet2)) printOutput(instruction, suma, "interbank"); else printOutput(instruction, suma, "ok"); } } } cin >> instruction; //cout << instruction; } cout << endl; } cout << "goodbye" << endl; return 0; }