Créer un histogramme à partir des données d'un vector
Fermé
Bapt_1
Messages postés
2
Date d'inscription
samedi 28 novembre 2020
Statut
Membre
Dernière intervention
28 novembre 2020
-
28 nov. 2020 à 09:31
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 29 nov. 2020 à 00:27
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 29 nov. 2020 à 00:27
3 réponses
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
28 nov. 2020 à 11:30
28 nov. 2020 à 11:30
Bonjour,
Tu souhaites gérer un histogramme.
Tu ne parles pas de le dessiner, pour cela ça dépend essentiellement de ton environnement graphique qu'il faudra peut-être choisir en fonction de ton système d'exploitation.
Sinon par exemple pour calculer le max de ton histogramme, il y a déjà une fonction dans <algorithm>, pour la moyenne il te faut la somme dans <numeric>:
Tu souhaites gérer un histogramme.
Tu ne parles pas de le dessiner, pour cela ça dépend essentiellement de ton environnement graphique qu'il faudra peut-être choisir en fonction de ton système d'exploitation.
Sinon par exemple pour calculer le max de ton histogramme, il y a déjà une fonction dans <algorithm>, pour la moyenne il te faut la somme dans <numeric>:
#include <algorithm> #include <numeric> #include <vector> int main(){ std::vector<int> histogram{ 0, 2 , 17, 21, 99, 92, 80, 61, 60, 59 }; int maxi = *std::max_element( histogram.begin(), histogram.end() ); double mean = std::accumulate( histogram.begin(), histogram.end(), 0 ) / static_cast<double>(histogram.size()); }
Bapt_1
Messages postés
2
Date d'inscription
samedi 28 novembre 2020
Statut
Membre
Dernière intervention
28 novembre 2020
28 nov. 2020 à 17:48
28 nov. 2020 à 17:48
Merci pour ta réponse !!
Je cherche justement a printer l'histogramme.
Je travail sous windows 10.
Je pourrais directement faire les stats sur le vecteur mais mon professeur me demande de travailler sur l'histo ...
Je cherche justement a printer l'histogramme.
Je travail sous windows 10.
Je pourrais directement faire les stats sur le vecteur mais mon professeur me demande de travailler sur l'histo ...
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
29 nov. 2020 à 00:27
29 nov. 2020 à 00:27
S'il faut un objet Histogram, il devra bien stocker les données et il les stockera surement dans un vector et les calculs se feront donc sur le vector.
Et pour le tracer, il faut bien savoir quel environnement tu utilises. Par exemple on peut avoir un dessin simpliste en mode console:
Et pour le tracer, il faut bien savoir quel environnement tu utilises. Par exemple on peut avoir un dessin simpliste en mode console:
#include <iostream> #include <vector> #include <algorithm> class Histogram { public: Histogram( std::vector<int> v ) : data(std::move(v)) {} void draw(){ const int h = *std::max_element( data.begin(), data.end() ); for ( int i = (h+1)/2 ; i > 0; --i ) { for ( auto x : data ) { if ( x < 2*i-1 ) std::cout.put(' '); // rien else if ( x == 2*i-1 ) std::cout.put( '\xDC'); // demi carré else std::cout.put( '\xDB' ); // carré plein } endl( std::cout << ' ' << i*2-1); } endl(std::cout<<std::string(data.size(),'+')); } private: std::vector<int> data; }; int main(){ // jeu de caractere Latin-1 = codepage 850 pour avoir des demi-carrés system( "chcp 850"); std::vector<int> vect{1,7,0,1,7,10,2,4,0,1,2,3,11,5,6,7,8,9,3,4,0,0,1,6,2,3,4,3,1,7,8,0,8,9}; Histogram hist( vect ); hist.draw(); }