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!"

  • Codice


/* 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

Edit | Attach | Watch | Print version | History: r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r2 - 2003-10-04 - AndreaSterbini






 
Questo sito usa cookies, usandolo ne accettate la presenza. (CookiePolicy)
Torna al Dipartimento di Informatica
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback