>> Technologie Électronique >  >> Maison intelligente >> Vie connectée

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).
Vie connectée