Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class VektorNd {
- double *_liczby; //pole ze wskaźnikiem liczb
- int _wymiar; //wymiar wektora
- public:
- VektorNd()
- {
- _wymiar = 0;
- _liczby = new double[1];
- }
- VektorNd (const double liczby[], int wymiar){ //konstruktor
- _liczby = new double[wymiar];
- _wymiar = wymiar;
- for(int i=0;i<_wymiar;i++)
- _liczby[i] = liczby[i];
- }
- ~VektorNd(){
- delete[] _liczby;
- }
- void wypisz(ostream & out = cout){
- out << "|-------------------------BEGIN------------------------------|"<<endl;
- out << "Jestem wektorem pod adresem: " << this <<endl;
- out << "Moj wymiar to: " << _wymiar << endl;
- out << "A elementy:"<<endl;
- for(int i=0;i<_wymiar;i++)
- out <<"["<<i<<"] = \t" << _liczby[i]<<endl;
- out << "|--------------------------END-------------------------------|"<<endl;
- }
- VektorNd& operator=(const VektorNd& right){ //implementacja operatora przypisania
- if(_wymiar!=right._wymiar){ //gdy zgodne wymiary nie potrzeba realokować pamięci
- delete[] _liczby;
- _liczby = new double[right._wymiar]; //alokacja pamięci dla nowego wymiaru
- _wymiar=right._wymiar;
- }
- for(int i=0;i<_wymiar;i++)
- _liczby[i] = right._liczby[i];
- return *this;
- }
- void getCoefs(double liczby[]){ //metoda publiczna
- for(int i=0;i<_wymiar;i++)
- liczby[i] = _liczby[i];
- }
- int getDim(){ //pomocznicza metoda
- return _wymiar;
- }
- };
- class VectorOfVectors {
- private:
- VektorNd *vektory;
- int size;
- public:
- int Size()
- {
- return size;
- }
- void Adres()
- {
- cout << this;
- }
- VektorNd* Nvektor(int i)
- {
- return &vektory[i];
- }
- // konstruktor
- VectorOfVectors()
- {
- size = 1;
- vektory = new VektorNd[1];
- };
- VectorOfVectors(VektorNd* vectors, int size)
- {
- VectorOfVectors::size = size;
- vektory = new VektorNd[size];
- for (int i=0; i<size; i++)
- {
- vektory[i] = vectors[i];
- }
- };
- VectorOfVectors(const VectorOfVectors &a)
- {
- size = a.size;
- vektory = new VektorNd[size];
- for (int i=0; i<a.size; i++)
- {
- vektory[i] = a.vektory[i];
- }
- };
- ~VectorOfVectors()
- {
- if (size>0)
- {
- delete[] vektory;
- }
- }
- /*VectorOfVectors& operator=(const VectorOfVectors& a)
- {
- if(size!=a.size){ //gdy zgodne wymiary nie potrzeba realokować pamięci
- delete[] vektory;
- vektory = new VektorNd[a.size]; //alokacja pamięci dla nowego wymiaru
- size = a.size;
- }
- for(int i=0;i<size;i++)
- vektory[i] = a.vektory[i];
- return *this;
- };*/
- VectorOfVectors& operator=(const VectorOfVectors& a)
- {
- VectorOfVectors tmp(a);
- delete[] vektory;
- vektory = new VektorNd[tmp.size];
- for (int i=0; i<tmp.size; i++)
- {
- vektory[i] = tmp.vektory[i];
- }
- size = tmp.size;
- return *this;
- };
- friend ostream& operator<<(ostream & left,VectorOfVectors& right);
- };
- ostream& operator<<(ostream & left, VectorOfVectors& right){
- left << "Ilosc vektorow: " << right.Size() << endl;
- right.Adres();
- for (int i = 0; i< right.Size(); i++)
- {
- right.Nvektor(i)->wypisz(left);
- }
- return left;
- }
- istream& operator>>(istream & left, VectorOfVectors& right){
- cout << "Podaj ilosc of vectorow: ";
- int n;
- left >> n;
- VektorNd* vectab = new VektorNd[n];
- for (int i=0; i<n; i++)
- {
- int m;
- cout << "podaj wymiar vektora " << i << ": ";
- cin >> m;
- double *htab = new double[m];
- for (int j=0; j<m; j++)
- {
- left >> htab[j];
- }
- VektorNd tmpvec(htab, m);
- vectab[i] = tmpvec;
- }
- VectorOfVectors tmpr(vectab, n);
- right = tmpr;
- return left;
- }
- void wypisz(double tab[],int rozmiar){
- for(int i=0;i<rozmiar;i++)
- cout << tab[i]<<'\t';
- cout <<endl;
- }
- int main(){
- VektorNd* vectors = new VektorNd[5];
- for (int i=0; i< 15; i+=3)
- {
- double l[3];
- l[0] = i; l[1] = i+1; l[2] = i+3;
- VektorNd buff = VektorNd(l, 3);
- vectors[i/3] = buff;
- }
- VectorOfVectors *a = new VectorOfVectors(vectors, 5);
- cout << *a;
- VectorOfVectors b, c;
- cin >> b;
- cout << b;
- c = b;
- cout << c;
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement