#include #include #define MAX_UCTU 11001 typedef struct { char jmeno[11]; float penize; int platny; int tvoren; } st_ucet; st_ucet ucty[MAX_UCTU]; int uctu; int hass(char *s) { char c[10]; strcpy(c, s); c[5] = '\0'; return atoi(c); } int hledej_ucet(char *s) { int i; i = hass(s); while ( strcmp(ucty[i].jmeno, s) != 0) { i++; if (ucty[i].platny == 0) return -1; if ( i >= MAX_UCTU) i = 0; } return i; } int hledej_ucet2(char *s) { int i; i = hass(s); while ( strcmp(ucty[i].jmeno, s) != 0) { i++; if (ucty[i].platny == 0) return i; if ( i >= MAX_UCTU) i = 0; } return i; } void zaloz() { char s[11]; int i; scanf("%s", s); i = hledej_ucet2(s); if (ucty[i].platny == 1) { printf("Ucet %s uz existuje.\n\n", s); return; } ucty[i].tvoren = uctu; uctu++; ucty[i].penize = 0; ucty[i].platny = 1; strcpy(ucty[i].jmeno, s); printf("Ucet %s vytvoren.\n\n", s); } void reset(int write) { int i; uctu = 0; if (write != 0) printf("Reset systemu.\n\n"); for (i = 0; i < MAX_UCTU; i++) ucty[i].platny = 0; } void uloz() { char s[11]; float castka; int i; scanf("%s %f", s, &castka); if ((i = hledej_ucet(s)) == -1) { printf("Ucet %s neexistuje.\n\n", s); return; } ucty[i].penize += castka; printf("Ulozeno %.2f na ucet %s.\n\n", castka, s); } void vyber() { char s[11]; float castka; int i; scanf("%s %f", s, &castka); if ((i = hledej_ucet(s)) == -1) { printf("Ucet %s neexistuje.\n\n", s); return; } if (ucty[i].penize >= castka) { ucty[i].penize -= castka; printf("Vybrano %.2f z uctu %s.\n\n", castka, s); } else printf("Nedostatek penez.\n\n"); } void statistika() { int i; double m = 0; printf("Pocet uctu: %d\n", uctu); for (i = 0; i < uctu; i++) m += ucty[i].penize; printf("Celkem: %7.2f\n\n", m); } void list() { int i; double m = 0; printf("Pocet uctu: %d\n", uctu); for (i = 0; i < uctu; i++) { m += ucty[i].penize; printf("%s %7.2f\n", ucty[i].jmeno, ucty[i].penize); } printf("Celkem: %7.2f\n\n", m); } void preved() { char zs[20]; char nas[20]; float castka; int z, na; scanf("%s", zs); z = hledej_ucet(zs); scanf("%s", nas); na = hledej_ucet(nas); scanf("%f", &castka); if (z == -1) { printf("Ucet %s neexistuje.\n\n", zs); return; } if (na == -1) { printf("Ucet %s neexistuje.\n\n", nas); return; } if (ucty[z].penize < castka) { printf("Nedostatek penez.\n\n"); return; } ucty[z].penize -= castka; ucty[na].penize += castka; printf("Prevedeno %.2f z uctu %s na ucet %s.\n\n", castka, zs, nas); } int radek() { char s[20]; scanf("%s", s); if (strcmp(s, "RESET") == 0) { reset(1); return 1; } if (strcmp(s, "ZALOZ") == 0) { zaloz(); return 1; } if (strcmp(s, "ULOZ") == 0) { uloz(); return 1; } if (strcmp(s, "VYBER") == 0) { vyber(); return 1; } if (strcmp(s, "STATISTIKA") == 0) {statistika(); return 1; } if (strcmp(s, "LIST") == 0) { list(); return 1;} if (strcmp(s, "PREVED") == 0) { preved(); return 1; } return 0; } int main() { reset(0); while (radek()) scanf("\n"); return 0; }