Advertisement
Guest User

Untitled

a guest
Apr 25th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.76 KB | None | 0 0
  1. /*
  2. PRACA DOMOWA:
  3.  
  4. 1) Do klasy Stat doda� metod� licz�c� odchylenie standardowe (StdDev) = sqrt[x^2 - x^2], x^2 = sumaE*x^2 / n
  5.  
  6. 2a) Napisz klase A, ktora ma dwa pola x i y  i funkcja ktora dodaje x+y
  7. 2b) Klasa B dziedziczy klase A. Klasa B ma funkcje, ktora mnozy x*y
  8.  
  9. */
  10.  
  11. #include <iostream>
  12. #include <fstream>
  13. #include <math.h>
  14.  
  15. using namespace std;
  16.  
  17. //================================================
  18.  
  19. class Array
  20. {
  21. protected:
  22.     int n;
  23.     double * tab;
  24. public:
  25.     Array();
  26.     ~Array();
  27.     void Wstaw(istream &plik);
  28.     void Wstaw(const char* fname);
  29.     int N() { return n;}
  30.     double &operator[](int i);
  31.     void Display(ostream &os);
  32.     void Display(const char * fname);
  33. };
  34.  
  35. class Stat: public Array
  36. {
  37. public:
  38.     double Suma();
  39.     double Srednia();
  40.     double StdDev();
  41.     Stat();
  42. };
  43.  
  44. //================================================
  45.  
  46. class A
  47. {
  48. protected:
  49.     double x,y;
  50. public:
  51.     A();
  52.     A(int x, int y) { this->x = x; this->y = y; };
  53.     double Suma() { return x+y; };
  54. };
  55.  
  56. class B: public A
  57. {
  58. public:
  59.     B(int x1, int y1): A(x1, y1) {} ;
  60.     double Iloczyn() { return x*y; }
  61. };
  62. //================================================
  63. int main()
  64. {
  65.     Stat S;
  66.     ifstream pl("tablica1.txt");
  67.     S.Wstaw(pl);
  68.     double sum = S.Suma();
  69.     double sr = S.Srednia();
  70.     double odchstd = S.StdDev();
  71.     cout << "======================================================\nLiczby w tablicy: " << endl;
  72.     S.Display(cout);
  73.     cout << "======================================================" << endl;
  74.     cout << "Suma: " << sum << ", srednia: " << sr << ", odchylenie standardowe: " << odchstd <<  endl;
  75.     cout << "======================================================" << endl;
  76.  
  77.  
  78.     cout << "\n\n\n======================================================" << endl;
  79.     cout << "Podaj 2 liczby: \n";
  80.     double x,y;
  81.     cin >> x >> y;
  82.     B liczby(x, y);
  83.     cout << "======================================================" << endl;
  84.     cout << "Suma: " << liczby.Suma() << ", iloczyn: " << liczby.Iloczyn() << "\n";
  85.     cout << "======================================================" << endl;
  86.  
  87.  
  88.  
  89.     pl.clear();
  90.     pl.close();
  91.     return 0;
  92. }
  93.  
  94. //================== ARRAY CLASS =================
  95.  
  96. Array::Array(): n(0), tab(0) {}
  97.  
  98. Array::~Array()
  99. {
  100.     if(tab)delete[] tab;
  101. }
  102.  
  103. void Array::Wstaw(istream &plik)
  104. {
  105.     if(tab)
  106.     {
  107.         delete[] tab;
  108.         tab = 0, n = 0;
  109.     }
  110.     plik >> n;
  111.     if(n<1) throw "n-error";
  112.     tab = new double[n];
  113.     for(int i=0; i<n; i++) plik >> tab[i];
  114. }
  115.  
  116. void Array::Wstaw(const char* fname)
  117. {
  118.     if(tab)
  119.     {
  120.         delete[] tab;
  121.         tab = 0, n = 0;
  122.     }
  123.     FILE * file = fopen(fname, "rt");
  124.     fscanf(file, "%d", &n);
  125.     if(n<1) throw "n-error";
  126.     tab = new double[n];
  127.     for(int i=0; i<n; i++)
  128.     {
  129.         fscanf(file, "%lf", &tab[i]);
  130.     }
  131. }
  132.  
  133. double &Array::operator[](int i)
  134. {
  135. if(i>=n || i<0) throw "i-error";
  136. return tab[i];
  137. }
  138.  
  139. void Array::Display(ostream &os)
  140. {
  141.     for(int i=0; i<n; i++)
  142.     {
  143.         os<< tab[i] << endl;
  144.     }
  145. }
  146.  
  147. void Array::Display(const char * fname)
  148. {
  149.     FILE* pf = fopen(fname, "wt");
  150.     for(int i=0; i<this->N(); i++)
  151.     fprintf(pf, "%12.3lf\n", tab[i]);
  152.     fclose(pf);
  153. }
  154.  
  155. //================== STAT CLASS ==================
  156.  
  157. Stat::Stat(): Array() { }
  158.  
  159. double Stat::Suma()
  160. {
  161.     double wynik=0.0;
  162.     for(int i=0; i<n; i++) wynik+=tab[i];
  163.     return wynik;
  164. }
  165.  
  166. double Stat::Srednia()
  167. {
  168.     return Suma()/n;
  169. }
  170.  
  171. double Stat::StdDev()
  172. {
  173.     double mianownik = Srednia();
  174.     double licznik = 0;
  175.  
  176.     for(int i=0; i<n; i++)
  177.     {
  178.         licznik+=pow(tab[i]-mianownik, 2);
  179.     }
  180.     if(mianownik!=0) return sqrt(licznik/mianownik);
  181.     else return -1;
  182. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement