Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //vector.h
- #ifndef vector_h
- #define vector_h
- #include <iostream>
- class vector{
- int* values;
- int size;
- public:
- vector(int n);
- vector();
- ~vector();
- vector operator= (vector a); //f
- vector operator+ (vector & a); //f
- vector operator- (vector &a); //f
- vector operator+= (vector & a); //f
- vector operator-= (vector &a); //f
- vector operator* (int a); //f
- friend vector operator* (int a, vector x);
- vector operator*= (int a); //f
- bool operator== (vector a); //f
- bool operator!= (vector a); //f
- int operator[] (int i); //f
- friend std::istream & operator>> (std::istream & wejscie, vector x);
- friend std::ostream & operator<< (std::ostream & wyjscie, vector x);
- };
- #endif
- //vector.cpp
- #include "vector.h"
- vector::vector(int n)
- {
- values = new int[n];
- for(int i=0; i<n; i++)
- values[i]=0;
- size=n;
- }
- vector::vector()
- {
- values = new int[2];
- values[0]=values[1]=0;
- size=2;
- }
- vector::~vector()
- {
- delete [] values;
- }
- vector vector::operator= (vector a)
- {
- if(*this==a)
- return *this;
- delete [] this->values;
- this->size=a.size;
- this->values=new int[this->size];
- for(int i=0; i<a.size; i++)
- this->values[i]=a.values[i];
- return *this;
- }
- vector vector::operator+= (vector & a)
- {
- if(this->size < a.size)
- {
- int *temp = new int[a.size];
- int i=0;
- for(; i < this->size; i++)
- temp[i]=this->values[i]+a.values[i];
- delete [] this->values;
- for(; i < a.size; i++)
- temp[i]=a.values[i];
- this->values=temp;
- }
- else
- {
- for(int i=0; i < a.size; i++)
- this->values[i]+=a.values[i];
- }
- return *this;
- }
- vector vector::operator-= (vector & a)
- {
- if(this->size < a.size)
- {
- int *temp = new int[a.size];
- int i=0;
- for(; i < this->size; i++)
- temp[i]=this->values[i]-a.values[i];
- delete [] this->values;
- for(; i < a.size; i++)
- temp[i]=a.values[i];
- this->values=temp;
- }
- else
- {
- for(int i=0; i < a.size; i++)
- this->values[i]-=a.values[i];
- }
- return *this;
- }
- vector vector::operator+ (vector &a)
- {
- vector result((this->size > a.size) ? this->size : a.size);
- for(int i=0; i < this->size; i++)
- result.values[i]+=this->values[i];
- for(int i=0; i < a.size; i++)
- result.values[i]+=a.values[i];
- return result;
- }
- vector vector::operator- (vector &a)
- {
- vector result((this->size > a.size) ? this->size : a.size);
- for(int i=0; i < this->size; i++)
- result.values[i]-=this->values[i];
- for(int i=0; i < a.size; i++)
- result.values[i]-=a.values[i];
- return result;
- }
- bool vector::operator== (vector a)
- {
- if(this->size!=a.size)
- return 0;
- for(int i=0; i<a.size; i++)
- if(this->values[i]!=a.values[i])
- return 0;
- return 1;
- }
- bool vector::operator!= (vector a)
- {
- if(this->size!=a.size)
- return 1;
- for(int i=0; i<a.size; i++)
- if(this->values[i]!=a.values[i])
- return 1;
- return 0;
- }
- int vector::operator[] (int i)
- {
- if(this->size < i+1)
- {
- std::cout << "Probujesz odczytac nieistniejaca w wektorze wartosc, zwracam 0";
- return 0;
- }
- return this->values[i];
- }
- vector vector::operator*= (int a)
- {
- for(int i=0; i < this->size; i++)
- this->values[i]*=a;
- return *this;
- }
- vector vector::operator* (int a)
- {
- vector result(this->size);
- for(int i=0; i < this->size; i++)
- result.values[i]=this->values[i]*a;
- return result;
- }
- vector operator* (int a, vector x)
- {
- vector result(x.size);
- for(int i=0; i < x.size; i++)
- result.values[i]=x.values[i]*a;
- return result;
- }
- std::istream & operator>> (std::istream & wejscie, vector x)
- {
- for(int i=0; i < x.size; i++)
- wejscie >> x.values[i];
- return wejscie;
- }
- std::ostream & operator<< (std::ostream & wyjscie, vector x)
- {
- for(int i=0; i < x.size-1; i++)
- wyjscie << x.values[i] << " ";
- wyjscie << x.values[x.size-1] << std::endl;
- return wyjscie;
- }
- //main.cpp
- #include "vector.h"
- using namespace std;
- int main()
- {
- int choice, size1, size2, scalar;
- cout << "Program testowy: 1) vector 2) matrix 0) wyjscie";
- cin >> choice;
- switch (choice)
- {
- case 1:
- {
- cout << "Podaj rozmiar wektora a: ";
- cin >> size1;
- vector a(size1);
- cout << "Podaj rozmiar wektora b: ";
- cin >> size2;
- vector b(size2);
- cout << "Podaj skalar: ";
- cin >> scalar;
- cout << "Podaj wspolrzedne wektora a: ";
- cin >> a;
- cout << "Podaj wspolrzedne wektora b: ";
- cin >> b;
- cout << endl << "----OPERACJE----" << endl;
- cout << "a + b = " << (a+b) << endl;
- cout << "a - b = " << (a-b) << endl;
- cout << "a * skalar = " << (a*scalar) << endl;
- cout << "skalar * a= " << (scalar*a) << endl;
- cout << "a == b -> " << (a==b) << endl;
- cout << "a != b -> " << (a!=b) << endl;
- break;
- }
- case 2:
- break;
- default:
- break;
- }
- return 0;
- }
- //output
- Program testowy: 1) vector 2) matrix 0) wyjscie1
- Podaj rozmiar wektora a: 4
- Podaj rozmiar wektora b: 4
- Podaj skalar: 3
- Podaj wspolrzedne wektora a: 1 2 3 4
- Podaj wspolrzedne wektora b: 5 6 7 8
- ----OPERACJE----
- a + b = 0 0 6 8
- a - b = 0 0 0 0
- a * skalar = 0 0 9 12
- skalar * a= 0 0 9 12
- a == b -> 0
- *** glibc detected *** ./2: double free or corruption (fasttop): 0x00000000023aa030 ***
Advertisement
Add Comment
Please, Sign In to add comment