Hirdetés

Új hozzászólás Aktív témák

  • Karma
    félisten

    Hát nem ennyire egyszerű, de megmutatom:

    #define MAXCHAR 256

    int main(int argc, char* argv[])
    {
    int i;
    int CharCounter[MAXCHAR];
    unsigned char ch;

    for (i=0;i<MAXCHAR;CharCounter[i++]=0);

    while (fread(&ch,1,1,stdin)==1) CharCounter[ch]++;

    for (i=16; i < MAXCHAR; i++){
    if (CharCounter[i]){
    printf("%d '%c' : %d\n",i,i,CharCounter[i]);
    }
    }
    return 0;
    }

    A lényege hogy karaktereket kér be és megszámolja hányszor szerepelt benne, nekem az kéne hogy a leggyakoribb karakter legyen legelöl

    Nos, gondolatban arra jutottam, hogy csinálj egy MAXCHAR hosszú indextömböt (sima int tömb, amit 0-től MAXCHAR-1-ig feltöltesz számokkal), és ezt rendezd buborékrendezéssel úgy, hogy összehasonlítási alapnak a CharCounter megfelelő értékét használod.

    Azaz kicsit formálisabban:
    index[i] <= index[j] akkor és csak akkor igaz, ha
    CharCounter[index[i]] <= CharCounter[index[j]].

Új hozzászólás Aktív témák