Affichage histogramme en c
frez
-
Dalfab Messages postés 706 Date d'inscription Statut Membre Dernière intervention -
Dalfab Messages postés 706 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je bloque sur un programme qui construit un histogramme.Je l'ai fait mais j'ai l'affichage inverse de ce qui est demandée,voici l'énoncé complet:
On se propose de construire un histogramme décrivant la répartition des valeurs des
éléments d’un vecteur tel que celui-ci :
{ 2, 3, 7, 6, 9,11,12,15,18,17, 14,13,12, 7, 8, 7, 5, 3, 2, 1, 1, 0, 2, 8,11,13,12,11, 6, 3};
Le programme affichera l’histogramme dans la fenêtre du terminal, en utilisant des blancs et des étoiles.
1. Écrire une fonction dont le prototype est : void histog(int v[], int nb)
2. Modifier le programme afin de pouvoir choisir la hauteur de l’histogramme. Le
prototype devient : void histog(int v[], int nb, int H).
voici mon code source:
je bloque sur un programme qui construit un histogramme.Je l'ai fait mais j'ai l'affichage inverse de ce qui est demandée,voici l'énoncé complet:
On se propose de construire un histogramme décrivant la répartition des valeurs des
éléments d’un vecteur tel que celui-ci :
{ 2, 3, 7, 6, 9,11,12,15,18,17, 14,13,12, 7, 8, 7, 5, 3, 2, 1, 1, 0, 2, 8,11,13,12,11, 6, 3};
Le programme affichera l’histogramme dans la fenêtre du terminal, en utilisant des blancs et des étoiles.
1. Écrire une fonction dont le prototype est : void histog(int v[], int nb)
2. Modifier le programme afin de pouvoir choisir la hauteur de l’histogramme. Le
prototype devient : void histog(int v[], int nb, int H).
voici mon code source:
#include <stdio.h>
#include <stdlib.h>
void histog(int v[], int nb)
{
int i,j,k;
for(i=0;i<nb;i++)
{
k=v[i];
for(j=0;j<k+1;j++)
{
printf("*");
}
printf("\n");
}
}
int main()
{
int v[]={2,3,7,6,9,11,12,15,18,17,14,13,12,7,8,7,5,3,2,1,1,0,2,8,11,13,12,11,6,3};
histog(v,30);
return 0;
}
A voir également:
- Histogram c
- Affichage double ecran - Guide
- Windows 11 affichage classique - Guide
- Problème affichage fenêtre windows 10 - Guide
- Affichage youtube trop grand ✓ - Forum YouTube
- Casio fx-92 affichage décimal ✓ - Forum calculatrices
4 réponses
Bonjour,
Qu'est-ce que tu appelles l'affichage inverse?
Le programme trace bien l'histogramme (avec 2*, puis 3*, ...)
Mais l'énoncé semble indiquer qu'il faudrait plutôt (1 espace+étoile, 2espaces + étoile, ...)
Qu'est-ce que tu appelles l'affichage inverse?
Le programme trace bien l'histogramme (avec 2*, puis 3*, ...)
Mais l'énoncé semble indiquer qu'il faudrait plutôt (1 espace+étoile, 2espaces + étoile, ...)
void histog(const int v[], int nb) { int i; // rechercher le max de la table int mx = 0; for ( i = 0 ; i < nb ; i++ ) { if ( v[i] > mx ) mx = v[i]; } // tracer les points visibles de l'histogramme en commeçant par le plus haut for ( ; mx >= 0 ; mx-- ) { for ( i = 0 ; i < nb ; i++ ) { if ( v[i] >= mx ) fputc( '*' , stdout ); else fputc( ' ' , stdout ); } printf( "\n" ); } }
c'est a dire comme ça:
°°°
°°°°
°°°°°°°°
l'affichage doit se faire verticalement.