Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <cmath>
- using namespace std;
- class pomiar{
- protected:
- string nazwaPomiaru;
- size_t rozmiar;
- double * tablica;
- public:
- pomiar(): nazwaPomiaru("Brak"), rozmiar(0), tablica(0) {};
- pomiar(const string & n ,const double * pkt1, const double * pkt2): nazwaPomiaru(n), rozmiar(pkt2 - pkt1 > 0? pkt2 - pkt1: 0), tablica(rozmiar? new double[rozmiar]: 0){
- for(size_t i = 0; i < rozmiar; i++){
- tablica[i] = *pkt1++;
- }
- };
- pomiar(const string & s, const size_t & roz):nazwaPomiaru(s), rozmiar(roz>0? roz : 0), tablica(rozmiar? new double[rozmiar]: 0){
- for(size_t i = 0; i < rozmiar; i++){
- tablica[i] = 0;
- }
- };
- pomiar(const pomiar & obj): nazwaPomiaru(obj.nazwaPomiaru), rozmiar(obj.rozmiar), tablica(new double[obj.rozmiar]){
- for(size_t i = 0; i < rozmiar; i++){
- tablica[i] = obj.tablica[i];
- }
- };
- const pomiar & operator =(const pomiar & obj){
- if(this != &obj){
- nazwaPomiaru = obj.nazwaPomiaru;
- rozmiar = obj.rozmiar;
- tablica = new double[obj.rozmiar];
- for(size_t i = 0; i < rozmiar; ++i)
- tablica[i] = obj.tablica[i];
- }
- return *this;
- }
- double & operator[](const size_t i){
- return tablica[i];
- }
- size_t size()const {
- return rozmiar;
- }
- ~pomiar(){delete [] tablica;};
- };
- class analiza: public pomiar{
- public:
- analiza():pomiar(){};
- analiza(const string & s, const double * pkt1, const double *pkt2): pomiar(s, pkt1, pkt2){};
- analiza(const string & s, const size_t & roz): pomiar(s, roz){};
- double srednia()const{
- double result = 0;
- for(size_t i = 0; i < rozmiar; ++i)
- result += tablica[i];
- return result/rozmiar;
- };
- double variancja()const {
- double result = 0;
- double avgValue = srednia();
- for(size_t i = 0; i < rozmiar; i++)
- result += (tablica[i] - avgValue) * (tablica[i] - avgValue);
- return result / rozmiar;
- }
- double odchylenie()const{
- return sqrt(variancja());
- }
- friend ostream & operator <<(ostream & out, const analiza & obj);
- };
- ostream & operator <<(ostream & out, const analiza & obj){
- out << obj.nazwaPomiaru << endl;
- for(size_t i = 0; i < obj.size(); i++)
- out << obj.tablica[i] << " ";
- out << endl;;
- return out; //
- }
- int main(){
- double dane1[] = { 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9 };
- double dane2[] = { 6.2, 5.0, 3.8, 5.4, 4.6, 6.0, 4.0, 7.5, 2.5 };
- analiza a1("Wysokość trawy [ cm ]", dane1, dane1+9);
- analiza a2("Moc czynna generatora [ MW ]", dane2, dane2+9);
- cout << a1 << a1.srednia() << " "<< a1.variancja() << " " << a1.odchylenie() << endl;
- cout << a2 << a2.srednia()<< " " << a2.variancja() << " "<< a2.odchylenie() << endl;
- analiza a3("Temperatura w lutym [ C ] ", 27 );
- a3[0]=-3;
- a3[5]=-10;
- a3[10]=-8;
- a3[15]=-2;
- a3[20]=1;
- a3[25]=2;
- a3[26]=3;
- cout << a3 << a3.srednia()<< " " << a3.variancja() << " "<< a3.odchylenie() << endl;
- analiza a4;
- cout << a4 << a4.srednia() << a4.variancja() << a4.odchylenie() << endl;
- a4 = a3;
- for (unsigned i = 0 ; i < a4.size(); ++i)
- cout << a4[i] << " ";
- cout << endl;
- cout << a4 << a4.srednia()<< " " << a4.variancja() << " "<< a4.odchylenie() << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement