#include <iostream>
#ifdef __BORLANDC__
#else
  using namespace std;
#endif

class TablicaDouble
  {
   private:
   unsigned R;
   double *T;
   public:
   TablicaDouble(unsigned Rozmiar=0);
   TablicaDouble(const TablicaDouble &Tb);
   ~TablicaDouble();
   unsigned Rozmiar()const { return(R); }
   void Rozmiar(unsigned NowyR);
   double &Dane(unsigned i);
   const double &Dane(unsigned i)const;
   void Drukuj(ostream &s=cout)const;
  };

TablicaDouble::TablicaDouble(unsigned Rozmiar):
  R(Rozmiar),
  T(R?new double[R]:0)
  {
  }

TablicaDouble::TablicaDouble(const TablicaDouble &Tb):
  R(Tb.R),
  T(R?new double[R]:0)
  {
   memcpy(T,Tb.T,R*sizeof(double));
  }

TablicaDouble::~TablicaDouble()
  {
   if(R) delete[] T;
  }

void TablicaDouble::Rozmiar(unsigned NowyR)
  {
   double *NowyT=NowyR?new double[NowyR]:0;
   if(R)
     {
      memcpy(NowyT,T,(R<NowyR?R:NowyR)*sizeof(double));
      delete[] T;
     }
   T=NowyT;
   R=NowyR;
  }

double &TablicaDouble::Dane(unsigned i)
  {
   if(i>=R) throw i;
   return(T[i]);
  }

const double &TablicaDouble::Dane(unsigned i)const
  {
   if(i>=R) throw i;
   return(T[i]);
  }

void TablicaDouble::Drukuj(ostream &s)const
  {
   s<<'{';
   for(unsigned i=0;i<R;++i)
     {
      if(i) s<<';';
      s<<T[i];
     }
   s<<'}';
  }

int main()
  {
   int N;
   cout<<"Podaj rozmiar: ";
   cin>>N;
   TablicaDouble T(N),A,B(7);
   for(unsigned i=0;i<T.Rozmiar();++i) T.Dane(i)=(double)i/2+1;

   cout<<"T="; T.Drukuj(); cout<<endl;
   cout<<"A="; A.Drukuj(); cout<<endl;
   cout<<"B="; B.Drukuj(); cout<<endl;

   TablicaDouble C=T;
   cout<<C.Dane(1000)<<endl;
   A.Rozmiar(N);
   for(unsigned i=0;i<A.Rozmiar();++i) A.Dane(i)=(double)i/4+1;

   return(0);
  }
