[c] non capisco una parte di questo programma

gtsolid
il programma dice:
"Scrivere un programma in linguaggio C che legga da tastiera una serie di caratteri
terminando l'acquisizione quando l'utente inserisce un ‘.’ .
Il programma dovrà poi visualizzare a video un istogramma orizzontale che rappresenta la
frequenza dei caratteri così introdotti, non considerando nel conteggio il ‘.’ ed evitando di
visualizzare gli elementi con frequenza pari a zero."

ed è:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

#define LEN 20

int main()
{
    char ch, cn;
    int frequenze[26], i, j, finito=0, idx;

    /*inizializzo frequenze*/
    for(i=0;i<26;i++){
        frequenze[i]=0;
    }

    /*fase di aquisizione input*/
    printf("Inserisci dei caratteri. '.' per terminare\n");
    while(!finito){
        printf(">");
        ch=getchar();
        cn=getchar();

        if(ch=='.'){
            finito=1;
        }
        else{/*aggiorno frequenze*/

                ch=tolower(ch);
                idx= ch-'a';
                frequenze[idx]++;

        }
    }

    /*output*/
    printf("Frequenze caratteri:\n");
    for(i=0;i<26;i++){
        if(frequenze[i]>0){
            printf("%c: ",'a'+i);
            for(j=0;j< frequenze[i]; j++){
                printf("* ");
            }
            printf("\n");
        }
    }
    return 0;
}


la parte che non capisco fondamentalmente è frequenze[idx]++;
a cosa serve?

Risposte
Rggb1
Alcune cose del codice sono da correggere, comunque:
frequenze[idx]++;

incrementa il valore dell'elemento idx-esimo del vettore frequenze, ovvero conta quante volte un particolare carattere è stato letto da tastiera.

Nel codice, idx=0 corrisponde a 'a', idx=1 a 'b' e così via. Quindi alla fine in frequenze[0] ci sarà il numero di volte che è stato introdotto 'a', in frequenze[1] il numero di volte di 'b' e così via.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.