#include #define maxpole 130000 #define maxuctu 10000 double penizecelkem = 0.0; struct Ucet { char nazev[20]; double penize; int aktivni; }; Ucet ucty[maxpole]; int odkazy[maxuctu]; int pocetuctu = 0; int hash( char* nazev ) { int vysledek = 0; for ( int i = 0; i < 10; i++ ) vysledek += 10*vysledek+((int)(nazev[i] - '0'))*(nazev[i]-'0'+100); vysledek %= 110123; // printf("hash = %d pro %s\n", vysledek, nazev); return vysledek; } int NajdiUcet(char *nazev){ int i = hash(nazev); while ((ucty[i].aktivni==1) && (strcmp(nazev, ucty[i].nazev))) i++; return ((ucty[i].aktivni==1) ? i : -1 ); } void Zaloz() { char vstup1[25]; scanf("%s", vstup1); if (NajdiUcet(vstup1)>=0) printf("Ucet %s uz existuje.\n\n", vstup1); else { int pos = hash( vstup1 ); while ( ucty[pos].aktivni == 1) pos++; odkazy[pocetuctu] = pos; ucty[pos].aktivni = 1; strcpy(ucty[pos].nazev, vstup1); ucty[pos].penize = 0; printf("Ucet %s vytvoren.\n\n", vstup1); pocetuctu++; } } void Uloz(){ int i; char vstup1[25]; double castka; scanf("%s %lf", vstup1, &castka); i=NajdiUcet(vstup1); if (i>=0) { ucty[i].penize += castka; printf("Ulozeno %0.2f na ucet %s.\n\n", castka, vstup1); penizecelkem += castka; } else printf("Ucet %s neexistuje.\n\n", vstup1); } void Vyber() { int i; char vstup1[25]; double castka; scanf("%s %lf", vstup1, &castka); i=NajdiUcet(vstup1); if (i<0) printf("Ucet %s neexistuje.\n\n", vstup1); else if (ucty[i].penize=0) && (j>=0) && (ucty[i].penize>=castka)) { ucty[i].penize -= castka; ucty[j].penize += castka; printf("Prevedeno %0.2f z uctu %s na ucet %s.\n", castka, ucet1, ucet2); } printf("\n"); } void Statistika() { printf("Pocet uctu: %d\n", pocetuctu); printf("Celkem: %10.2f\n\n", penizecelkem); // for (int i=0; i