/* * Programmieren fuer Physiker, SS 2010 * * Beispiel fuer Vererbung * Klasse zur Aufnahem von Messwerten, Durchschnittsberechnung * davon abgeleitet: Klasse, die auch Standardabweichung berechnet */ #include #include using namespace std ; // --------------------------------------------- CLASS stat class stat { public: stat() ; // Konstruktor void add( double x) ; // Wert zufuegen double get_avg() ; // Mittelwert erfragen protected: int cnt ; private: double sum ; } ; stat::stat() { cnt = 0 ; sum = 0 ; } void stat::add( double x) { ++cnt ; sum += x ;} double stat::get_avg() { return sum/cnt ; } // here assuming cnt!=0.... // --------------------------------------------- CLASS stat_w_err class stat_w_err : public stat { public: stat_w_err() : stat() { sumsqr=0 ; } ; void add( double x) ; // Wert zufuegen double get_err() ; // Standardabw. berechnen private: double sumsqr ; } ; void stat_w_err::add( double x) { sumsqr += x*x ; stat::add(x) ; } double stat_w_err::get_err() { return sqrt(sumsqr/cnt - get_avg()*get_avg()) ; } // --------------------------------------------- MAIN int main() { stat_w_err t_in_ka ; // Temperatur in Karlsruhe t_in_ka.add(27.5) ; t_in_ka.add(31.2) ; t_in_ka.add(34.5) ; t_in_ka.add(32.3) ; cout << "Durchschnitt ist: " << t_in_ka.get_avg() << endl ; cout << "Std-Abw ist: " << t_in_ka.get_err() << endl ; }