Comment créer un histogramme en langage C
Les histogrammes sont couramment utilisés dans les tableurs pour analyser des données, ou dans les logiciels d'image pour visualiser la distribution des tons (noir à blanc). En C, l'utilisation d'un tableau pour compter les fréquences simplifie la création d'un histogramme à partir d'un jeu de données. Bien que les données soient souvent des entiers, on peut aussi compter des caractères ou des chaînes.
Étape 1 : Définir les données
Remplissez un tableau d'entiers values avec vos données, et définissez numvalues (nombre de valeurs). Exemple d'initialisation :
int numvalues = 20;
int values[numvalues] = { -3, 2, -2, 4, 5, 4, 2, 5, 4, 5, -1, 2, 3, 4, 7, 4, 2, 0, 7, -3 };
Étape 2 : Déclarer les itérateurs
int i = 0, j = 0;
Étape 3 : Trouver la valeur maximale
int maxval = 0;
for (i = 0; i < numvalues; i++) {
if (values[i] > maxval) maxval = values[i];
}
Étape 4 : Trouver la valeur minimale
int minval = maxval;
for (i = 0; i < numvalues; i++) {
if (values[i] < minval) minval = values[i];
}
Étape 5 : Calculer la taille du tableau de fréquences
int freqsize = maxval - minval + 1;
Étape 6 : Initialiser le tableau de fréquences à zéro
int frequency[freqsize];
for (i = 0; i < freqsize; i++) {
frequency[i] = 0;
}
Chaque case correspond à une valeur possible de l'intervalle [minval, maxval].
Étape 7 : Compter les occurrences
for (i = 0; i < numvalues; i++) {
int index = values[i] - minval;
frequency[index]++;
}
L'index est décalé de minval pour gérer les valeurs négatives.
Étape 8 : Afficher l'histogramme (en mode texte)
for (i = 0; i < freqsize; i++) {
printf("%2d\t|", i + minval); // valeur
for (j = 0; j < frequency[i]; j++) {
printf("*"); // une étoile par occurrence
}
printf("\n");
}
Remarques
- Cet exemple affiche un histogramme horizontal en console.
- Pour des données réelles, prévoyez une lecture depuis fichier ou saisie utilisateur.
- Pour un histogramme graphique, il faut coupler avec une bibliothèque (ex. GD, Cairo, OpenGL).
