[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.