#include typedef struct ucet { int cislo; int banka; double peniaze; } UCET; void deposit (UCET ucty[], int pocet); void withdraw (UCET ucty[], int pocet); void transfer (UCET ucty[], int pocet); void create(UCET ucty[], int *pocet); int main(void) { UCET ucty[120]; int pocet, i; char cislo[10]; char prikaz[12]; while (1) { scanf(" %d", &pocet); if (pocet == 0) { printf("goodbye\n"); break; } else { for (i = 0; i < pocet; i++) { scanf(" %s %lf", cislo, &(ucty[i].peniaze)); sscanf(cislo, "%d/%d", &(ucty[i].cislo), &(ucty[i].banka)); } while (1) { scanf(" %s", prikaz); if (prikaz[0] == 'e') { printf("end\n"); printf("\n"); break; } else switch (prikaz[0]) { case 'c': create(ucty, &pocet); break; case 'd': deposit(ucty, pocet); break; case 'w': withdraw(ucty, pocet); break; case 't': transfer(ucty, pocet); break; default: break; } } } } return 0; } void deposit (UCET ucty[], int pocet) { char cislo[10]; double kolko; int ucet, banka, i; scanf(" %s %lf", cislo, &kolko); sscanf(cislo, " %d/%d", &ucet, &banka); for (i = 0; i < pocet; i++) if (ucty[i].cislo == ucet && ucty[i].banka == banka) break; if (i == pocet) printf("deposit %.2lf: no such account\n", kolko); else { ucty[i].peniaze = ucty[i].peniaze + kolko; printf("deposit %.2lf: ok\n", kolko); } } void withdraw (UCET ucty[], int pocet) { char cislo[10]; double kolko; int ucet, banka, i; scanf(" %s %lf", cislo, &kolko); sscanf(cislo, " %d/%d", &ucet, &banka); for (i = 0; i < pocet; i++) if (ucty[i].cislo == ucet && ucty[i].banka == banka) break; if (i == pocet) printf("withdraw %.2lf: no such account\n", kolko); else { if (ucty[i].peniaze < kolko) printf("withdraw %.2lf: insufficient funds\n", kolko); else { ucty[i].peniaze = ucty[i].peniaze - kolko; printf("withdraw %.2lf: ok\n", kolko); } } } void transfer (UCET ucty[], int pocet) { char cislo[10]; char cislo2[10]; double kolko; int ucet, banka, ucet2, banka2, i, j; scanf(" %s %s %lf", cislo, cislo2, &kolko); sscanf(cislo, " %d/%d", &ucet, &banka); sscanf(cislo2, "%d/%d", &ucet2, &banka2); for (i = 0; i < pocet; i++) if (ucty[i].cislo == ucet && ucty[i].banka == banka) break; for (j = 0; j < pocet; j++) if (ucty[j].cislo == ucet2 && ucty[j].banka == banka2) break; if (i == pocet || j == pocet) printf("transfer %.2lf: no such account\n", kolko); else { if (ucet == ucet2 && banka == banka2) printf("transfer %.2lf: same account\n", kolko); else { if (ucty[i].peniaze < kolko) printf("transfer %.2lf: insufficient funds\n", kolko); else { ucty[i].peniaze = ucty[i].peniaze - kolko; ucty[j].peniaze = ucty[j].peniaze + kolko; if (banka == banka2) printf("transfer %.2lf: ok\n", kolko); else printf("transfer %.2lf: interbank\n", kolko); } } } } void create(UCET ucty[], int *pocet) { int banka, ucet, i; scanf(" %d/%d", &ucet, &banka); for (i = 0; i < *pocet; i++) if (ucty[i].cislo == ucet && ucty[i].banka == banka) break; if (i == *pocet) { printf("create: ok\n"); ucty[i].cislo = ucet; ucty[i].banka = banka; ucty[i].peniaze = 0.00; (*pocet)++; } else printf("create: already exists\n"); }