---++ 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. <b>Esempio:</b><br> <verbatim> Un istogramma testuale ... ****** ** ********* **** ****** ************* *** </verbatim> <br> 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!" * <b>Codice</b> <pre style="background: lightgrey;"> /* istogramma */ #include <stdio.h> #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; } </pre> -- Users.MarcoEsposito - 25 Nov 2002
This topic: Programmazione1/AA0506/PZ
>
WebHome
>
AppuntiEsercitazioni2002
>
StampaIstogramma
Topic revision: r2 - 2003-10-04 - AndreaSterbini
Copyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback