[c] non capisco una parte di questo programma
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 è:
la parte che non capisco fondamentalmente è frequenze[idx]++;
a cosa serve?
"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
Alcune cose del codice sono da correggere, comunque:
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.
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.