if (ninter < 1) nint =1 ;
min = mini ; max = maxi ; nint = ninter ;
adc = new int [nint] ; // alloc emplacements compteurs
int i ;
for (i=0 ; i<=nint-1 ; i++) adc[i] = 0 ; // et r.a.z.
ecart = (max - min) / nint ; // largeur d'une tranche
}
/********************* destructeur *********************/
histo::~histo ()
{ delete adc ;
}
/********************* opérateur << ********************/
histo & histo::operator << (float v)
{ int nt = (v-min) / ecart ;
// on ne comptabilise que les valeurs "convenables"
if ( (nt>=0) && (nt<=nint-1) ) adc [nt] ++ ;
return (*this) ;
}
/********************* opérateur [] ********************/
int histo::operator [] (int n) // résultat par valeur ici
{ if ( (n<1) || (n>nint) ) n=1 ; // protection "débordement"
return adc[n-1] ;
}
Voici, à titre indicatif, un petit programme d’essai de la classe histo, accompagné du
résultat fourni par son exécution :
#include "histo.h"
#include
using namespace std ;
main()
{ const int nint = 4 ;
int i ;
histo h (0., 5., nint) ; // 4 tranches entre 0 et 5
h << 1.5 << 2.4 << 3.8 << 3.0 << 2.0 << 3.5 << 2.8 << 4.6 ;
h << 12.0 << -3.5 ;
for (i=0 ; i<10 ; i++) h << i/2.0 ;
cout << "valeurs des tranches \n" ;
for (i=1 ; i<=nint ; i++)
cout << "numéro " << i << " : " << h[i] << "\n" ;
// une affectation telle que h[2] = ... serait rejetée en compilation
}
valeurs des tranches
numéro 1 : 3
numéro 2 : 5
numéro 3 : 6
numéro 4 : 4
219
min = mini ; max = maxi ; nint = ninter ;
adc = new int [nint] ; // alloc emplacements compteurs
int i ;
for (i=0 ; i<=nint-1 ; i++) adc[i] = 0 ; // et r.a.z.
ecart = (max - min) / nint ; // largeur d'une tranche
}
/********************* destructeur *********************/
histo::~histo ()
{ delete adc ;
}
/********************* opérateur << ********************/
histo & histo::operator << (float v)
{ int nt = (v-min) / ecart ;
// on ne comptabilise que les valeurs "convenables"
if ( (nt>=0) && (nt<=nint-1) ) adc [nt] ++ ;
return (*this) ;
}
/********************* opérateur [] ********************/
int histo::operator [] (int n) // résultat par valeur ici
{ if ( (n<1) || (n>nint) ) n=1 ; // protection "débordement"
return adc[n-1] ;
}
Voici, à titre indicatif, un petit programme d’essai de la classe histo, accompagné du
résultat fourni par son exécution :
#include "histo.h"
#include
using namespace std ;
main()
{ const int nint = 4 ;
int i ;
histo h (0., 5., nint) ; // 4 tranches entre 0 et 5
h << 1.5 << 2.4 << 3.8 << 3.0 << 2.0 << 3.5 << 2.8 << 4.6 ;
h << 12.0 << -3.5 ;
for (i=0 ; i<10 ; i++) h << i/2.0 ;
cout << "valeurs des tranches \n" ;
for (i=1 ; i<=nint ; i++)
cout << "numéro " << i << " : " << h[i] << "\n" ;
// une affectation telle que h[2] = ... serait rejetée en compilation
}
valeurs des tranches
numéro 1 : 3
numéro 2 : 5
numéro 3 : 6
numéro 4 : 4
219
