Advertisement
bazmikel

Z9

Dec 4th, 2019
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.25 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <cmath>
  4. using namespace std;
  5.  
  6. class pomiar{
  7. protected:
  8. string nazwaPomiaru;
  9. size_t rozmiar;
  10. double * tablica;
  11. public:
  12. pomiar():  nazwaPomiaru("Brak"), rozmiar(0), tablica(0) {};
  13. 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){
  14.     for(size_t i = 0; i < rozmiar; i++){
  15.         tablica[i] = *pkt1++;
  16.     }
  17. };
  18. pomiar(const string & s, const size_t & roz):nazwaPomiaru(s), rozmiar(roz>0? roz : 0), tablica(rozmiar? new double[rozmiar]: 0){
  19.   for(size_t i = 0; i < rozmiar; i++){
  20.       tablica[i] = 0;
  21.   }
  22. };
  23.  
  24. pomiar(const pomiar & obj): nazwaPomiaru(obj.nazwaPomiaru), rozmiar(obj.rozmiar), tablica(new double[obj.rozmiar]){
  25.   for(size_t i = 0; i < rozmiar; i++){
  26.       tablica[i] = obj.tablica[i];
  27.   }
  28. };
  29.  
  30. const pomiar & operator =(const pomiar & obj){
  31.   if(this != &obj){
  32.     nazwaPomiaru = obj.nazwaPomiaru;
  33.     rozmiar = obj.rozmiar;
  34.     tablica = new double[obj.rozmiar];
  35.     for(size_t i = 0; i < rozmiar; ++i)
  36.       tablica[i] = obj.tablica[i];
  37.   }
  38.   return *this;
  39. }
  40.  
  41. double & operator[](const size_t i){
  42.   return tablica[i];
  43. }
  44.  
  45. size_t size()const {
  46.   return rozmiar;
  47. }
  48.  
  49. ~pomiar(){delete [] tablica;};
  50.  
  51. };
  52.  
  53. class analiza: public pomiar{
  54. public:
  55.   analiza():pomiar(){};
  56.   analiza(const string & s, const double * pkt1, const double *pkt2): pomiar(s, pkt1, pkt2){};
  57.   analiza(const string & s, const size_t & roz): pomiar(s, roz){};
  58.  
  59.   double srednia()const{
  60.     double result = 0;
  61.     for(size_t i = 0; i < rozmiar; ++i)
  62.         result += tablica[i];
  63.     return result/rozmiar;
  64.     };
  65.  
  66.   double variancja()const {
  67.       double result = 0;
  68.       double avgValue = srednia();
  69.       for(size_t i = 0; i < rozmiar; i++)
  70.           result += (tablica[i] - avgValue) * (tablica[i] - avgValue);
  71.  
  72.       return result / rozmiar;
  73.     }
  74.  
  75.   double odchylenie()const{
  76.       return sqrt(variancja());
  77.     }
  78.  
  79.  
  80.  
  81.  
  82.   friend ostream & operator <<(ostream & out,  const analiza & obj);
  83. };
  84.  
  85.  
  86. ostream & operator <<(ostream & out,  const analiza & obj){
  87.   out << obj.nazwaPomiaru << endl;
  88.   for(size_t i = 0; i < obj.size(); i++)
  89.     out << obj.tablica[i] << " ";
  90.   out << endl;;
  91.   return out; //
  92. }
  93.  
  94. int main(){
  95.   double dane1[] = { 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9 };
  96.   double dane2[] = { 6.2, 5.0, 3.8, 5.4, 4.6, 6.0, 4.0, 7.5, 2.5 };
  97.  
  98.   analiza a1("Wysokość trawy [ cm ]", dane1, dane1+9);
  99.   analiza a2("Moc czynna generatora [ MW ]", dane2, dane2+9);
  100.  
  101.   cout << a1 << a1.srednia() << " "<< a1.variancja() << " " << a1.odchylenie() << endl;
  102.   cout << a2 << a2.srednia()<< " " << a2.variancja() << " "<< a2.odchylenie() << endl;
  103.  
  104.   analiza a3("Temperatura w lutym [ C ] ", 27 );
  105.   a3[0]=-3;
  106.   a3[5]=-10;
  107.   a3[10]=-8;
  108.   a3[15]=-2;
  109.   a3[20]=1;
  110.   a3[25]=2;
  111.   a3[26]=3;
  112.  
  113.   cout << a3 << a3.srednia()<< " " << a3.variancja() << " "<< a3.odchylenie() << endl;
  114.  
  115.   analiza a4;
  116.   cout << a4 << a4.srednia() << a4.variancja() << a4.odchylenie() << endl;
  117.  
  118.   a4 = a3;
  119.   for (unsigned i = 0 ; i < a4.size(); ++i)
  120.   cout << a4[i] << " ";
  121.   cout << endl;
  122.   cout << a4 << a4.srednia()<< " " << a4.variancja() << " "<< a4.odchylenie() << endl;
  123.  
  124.   return 0;
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement