Stampa Istogramma
Un istogramma è un grafico che serve per rappresentare quantità e misurazioni e viene usato molto spesso nella statistica. Siccome ancora non siamo in grado di disegnare a video un istogramma come si deve, (un pò perchè non sappiamo ancora programmare e un pò anche perchè è molto difficile) stamperemo in output un istogramma di caratteri e indicheremo con degli asterischi le "misure" da rappresentare.
Esempio:
Un istogramma testuale ...
******
**
*********
****
******
*************
***
Questo istogramma si può pensare di crearlo usando un vettore, e il valore degli elementi del vettore, saranno l'altezza di ogni riga del nostro istogramma. "Detto fatto!"
/* istogramma */
#include
#define SIZE 20 /* dimenzione massima degli elementi dell'istogramma */
#define RANGE 11 /* quante righe ha l'istogramma */
/* desc: Questo istogramma sara' visualizzato per righe invece che per colonne,
* il RANGE, e' il numero massimo di righe(colonne) dell'istogramma,
* percio' non possiamo inserire valori fuori dal RANGE che sar� da
* 0 a RANGE */
int main()
{
int valori[SIZE] = {0};
int frequenze[RANGE] = {0};
int i, j;
/* Memorizzo i valori nel vettore */
for(i = 0; i < SIZE; i---++)
scanf("%d",&valori[i]);
/* Controllo elemento per elemento se ho inserito valori fuori dal RANGE
* e se il valore e' giusto, vado a incrementare nel vettore dell'istogramma
* l'elemento nella posizione del valore stesso. Questo passo puo' sembrare difficile
* ma non e' come sembra. Esempio: valori[4] = 5 incremento frequenze[5]---++ */
for(i = 0; i < SIZE; i---++)
{
if(valori[i] >= 0 && valori[i] <= RANGE)
frequenze[valori[i]]---++;
}
/* Stampo gli asterischi uno alla volta usando una for annidata, che cicla di quante volte
* ho incrementato l'elemento della frequenza, in oltre prima della righa degli asterischi
* stampo la riga e il valore della riga */
for(i = 0; i < RANGE; i---++)
{
printf("%d %d ", i, frequenze[i]);
for(j = 0; j < frequenze[i]; j---++)
{
printf("*");
}
printf("\n");
}
return 0;
}
--
MarcoEsposito - 25 Nov 2002