Advertisement
Guest User

Untitled

a guest
May 21st, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.07 KB | None | 0 0
  1. #pragma once
  2.  
  3. template<typename T,int DIM>
  4. class Punkt
  5. {
  6. protected:
  7.     T tab[DIM];
  8. public:
  9.  
  10.     Punkt* elNast;
  11.     Punkt()
  12.     {
  13.         for (int i = 0; i < DIM; i++)
  14.             tab[i] = 0;
  15.  
  16.         elNast = nullptr;
  17.     }
  18.  
  19.     virtual ~Punkt() {};
  20.  
  21.     Punkt(T* wartosci)
  22.     {
  23.         for (int i = 0; i < DIM; i++)
  24.             tab[i] = wartosci[i];
  25.     }
  26.  
  27.     T Get(int n)
  28.     {
  29.         if (n>=0 && n<DIM)
  30.             return tab[n];
  31.     }
  32.  
  33.     virtual std::string Wypisz()
  34.     {
  35.         std::stringstream ss;
  36.  
  37.         ss << "(";
  38.         for (int i = 0; i < DIM; i++)
  39.         {
  40.             ss << tab[i];
  41.             if (i != DIM - 1)
  42.                 ss << ",";
  43.         }
  44.         ss << ")";
  45.  
  46.         return ss.str();
  47.     }
  48.  
  49.     virtual double LiczOdlegloscOdSrodka()
  50.     {
  51.         double sum = 0;
  52.         for (int i = 0; i < DIM; i++)
  53.             sum += tab[i] * tab[i];
  54.  
  55.         return std::sqrt(sum);
  56.     }
  57.    
  58.     double LiczOdlegloscOdPunktu(Punkt& p)
  59.     {
  60.         double sum = 0;
  61.         for (int i = 0; i < DIM; i++)
  62.             sum += (tab[i] - p.tab[i]) * (tab[i] - p.tab[i]);
  63.        
  64.         return std::sqrt(sum);
  65.     }
  66. };
  67.  
  68. typedef Punkt<int, 2> PunktI2D;
  69. typedef Punkt<double, 2> PunktD2D;
  70.  
  71. typedef Punkt<int, 3> PunktI3D;
  72. typedef Punkt<double, 3> PunktD3D;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement