Dunque, mi è quasi tutto chiaro anche di questo metodo, che in pratica rispecchia per certi versi un riassunto degli switch...vediamo un programma:
#include <stdio.h>
#define RISPOSTE 40
#define VALORI 11
main()
{
int domanda, voto;
int lerisposte[RISPOSTE] = {1, 2, 6, 4, 8, 5, 9, 7, 8, 10, 1, 6, 3, 8, 6, 10, 3, 8, 2, 7, 6,
5, 7, 6, 8, 6, 7, 5, 6, 6, 5, 6, 7, 5, 6, 4, 8, 6, 8, 10};
int frequenza[VALORI] = {0};
domanda = 0;
while(domanda <= RISPOSTE - 1){
++frequenza[lerisposte[domanda]];
++domanda;
}
printf("%s%17s\n", "Voti", "Frequenza");
voto = 1;
while(voto <= VALORI - 1){
printf("%6d%17d\n", voto, frequenza[voto]);
++voto;
}
return 0;
}
il primo dubbio è su questa istruzione: int frequenza[VALORI] = {0};perchè azzerare in pratica l'11 valore?? se deve essere ignorato lo 0...
e poi su questa istruzione: ++frequenza[lerisposte[domanda]]; perchè inserire il valore della variabile contatore, all'interno della frequenza? se già cè il while che tiene il conto delle risposte...