#include #include #include #define MAX_UCTU 10050 #define MAX_STR 2048 typedef struct { long cis; double pen; } ucet; ucet ucty[MAX_UCTU]; int uctu; int uc_poz(long cislo) { int i; for (i=0; i < uctu; i++) { if ( ucty[i].cis == cislo) { return i; } } return -1; } int main(void) { char prikaz [MAX_STR]; long cislo1, cislo2; double castka; int tmp, tmp2, i; while ( scanf("%s", prikaz) > 0 ) { switch (*prikaz) { case 'Z': /* Zaloz */ scanf("%ld", &cislo1); if (uc_poz(cislo1) < 0) { ucty[uctu].cis=cislo1; ucty[uctu].pen=0.0; printf("Ucet %010li vytvoren.\n", cislo1); uctu ++; } else { printf("Ucet %010li uz existuje.\n", cislo1); } break; case 'U': /* Uloz */ scanf("%ld %lf", &cislo1, &castka); if ((tmp=uc_poz(cislo1)) < 0) { printf("Ucet %010li neexistuje.\n", cislo1); } else { ucty[tmp].pen += castka; printf("Ulozeno %.2f na ucet %010li.\n", castka, cislo1); } break; case 'V': /* Vyber */ scanf("%ld %lf", &cislo1, &castka); if ((tmp=uc_poz(cislo1)) < 0) { printf("Ucet %010li neexistuje.\n", cislo1); } else if (ucty[tmp].pen < castka) { printf("Nedostatek penez.\n"); } else { ucty[tmp].pen -= castka; printf("Vybrano %.2f z uctu %010li.\n", castka, cislo1); } break; case 'P': /* Preved */ scanf("%ld %ld %lf", &cislo1, &cislo2, &castka); if ((tmp=uc_poz(cislo1)) < 0) { printf("Ucet %010li neexistuje.\n", cislo1); if (uc_poz(cislo2) < 0) { printf("Ucet %010li neexistuje.\n", cislo2); } } else if (ucty[tmp].pen < castka) { printf("Nedostatek penez.\n"); if (uc_poz(cislo2) < 0) { printf("Ucet %010li neexistuje.\n", cislo2); } } else if ((tmp2=uc_poz(cislo2)) < 0) { printf("Ucet %010li neexistuje.\n", cislo2); } else { ucty[tmp].pen -= castka; ucty[tmp2].pen += castka; printf("Prevedeno %.2f z uctu %010li na ucet %010li.\n", castka, cislo1, cislo2); } break; case 'L': /* Vypis */ case 'S': /* Statistika */ printf("Pocet uctu: %i\n", uctu); for (i=0, castka=0.0; i < uctu; i++) { castka += ucty[i].pen; if ( *prikaz == 'L') { printf("%010li %10.2f\n", ucty[i].cis, ucty[i].pen); } } printf("Celkem: %10.2f\n", castka); break; case 'R': /* Reset */ uctu=0; printf("Reset systemu.\n"); break; } printf("\n"); } printf("Konec.\n"); return 0; }