Guest User

Untitled

a guest
Apr 24th, 2013
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.39 KB | None | 0 0
  1. //vector.h
  2.  
  3. #ifndef vector_h
  4. #define vector_h
  5. #include <iostream>
  6.  
  7. class vector{
  8.     int* values;
  9.     int size;
  10. public:
  11.     vector(int n);
  12.     vector();
  13.     ~vector();
  14.     vector operator= (vector a); //f
  15.     vector operator+ (vector & a); //f
  16.     vector operator- (vector &a); //f
  17.     vector operator+= (vector & a); //f
  18.     vector operator-= (vector &a); //f
  19.     vector operator* (int a); //f
  20.     friend vector operator* (int a, vector x);
  21.     vector operator*= (int a); //f
  22.     bool operator== (vector a); //f
  23.     bool operator!= (vector a); //f
  24.     int operator[] (int i); //f
  25.  
  26.     friend std::istream & operator>> (std::istream & wejscie, vector x);
  27.     friend std::ostream & operator<< (std::ostream & wyjscie, vector x);
  28. };
  29.  
  30.  
  31.  
  32. #endif
  33.  
  34.  
  35. //vector.cpp
  36. #include "vector.h"
  37.  
  38. vector::vector(int n)
  39. {
  40.     values = new int[n];
  41.     for(int i=0; i<n; i++)
  42.         values[i]=0;
  43.     size=n;
  44. }
  45.  
  46. vector::vector()
  47. {
  48.     values = new int[2];
  49.     values[0]=values[1]=0;
  50.     size=2;
  51. }
  52.  
  53. vector::~vector()
  54. {
  55.     delete [] values;
  56. }
  57.  
  58. vector vector::operator= (vector a)
  59. {
  60.     if(*this==a)
  61.         return *this;
  62.     delete [] this->values;
  63.     this->size=a.size;
  64.     this->values=new int[this->size];
  65.     for(int i=0; i<a.size; i++)
  66.         this->values[i]=a.values[i];
  67.     return *this;
  68. }
  69.  
  70. vector vector::operator+= (vector & a)
  71. {
  72.     if(this->size < a.size)
  73.     {
  74.         int *temp = new int[a.size];
  75.         int i=0;
  76.         for(; i < this->size; i++)
  77.             temp[i]=this->values[i]+a.values[i];
  78.         delete [] this->values;
  79.         for(; i < a.size; i++)
  80.             temp[i]=a.values[i];
  81.         this->values=temp;
  82.     }
  83.     else
  84.     {
  85.         for(int i=0; i < a.size; i++)
  86.             this->values[i]+=a.values[i];
  87.     }
  88.     return *this;
  89. }
  90.  
  91. vector vector::operator-= (vector & a)
  92. {
  93.     if(this->size < a.size)
  94.     {
  95.         int *temp = new int[a.size];
  96.         int i=0;
  97.         for(; i < this->size; i++)
  98.             temp[i]=this->values[i]-a.values[i];
  99.         delete [] this->values;
  100.         for(; i < a.size; i++)
  101.             temp[i]=a.values[i];
  102.         this->values=temp;
  103.     }
  104.     else
  105.     {
  106.         for(int i=0; i < a.size; i++)
  107.             this->values[i]-=a.values[i];
  108.     }
  109.     return *this;
  110. }
  111.  
  112. vector vector::operator+ (vector &a)
  113. {
  114.     vector result((this->size > a.size) ? this->size : a.size);
  115.     for(int i=0; i < this->size; i++)
  116.         result.values[i]+=this->values[i];
  117.     for(int i=0; i < a.size; i++)
  118.         result.values[i]+=a.values[i];
  119.     return result;
  120. }
  121.  
  122. vector vector::operator- (vector &a)
  123. {
  124.     vector result((this->size > a.size) ? this->size : a.size);
  125.     for(int i=0; i < this->size; i++)
  126.         result.values[i]-=this->values[i];
  127.     for(int i=0; i < a.size; i++)
  128.         result.values[i]-=a.values[i];
  129.     return result;
  130. }
  131.  
  132. bool vector::operator== (vector a)
  133. {
  134.     if(this->size!=a.size)
  135.         return 0;
  136.     for(int i=0; i<a.size; i++)
  137.         if(this->values[i]!=a.values[i])
  138.             return 0;
  139.     return 1;
  140. }
  141.  
  142. bool vector::operator!= (vector a)
  143. {
  144.     if(this->size!=a.size)
  145.         return 1;
  146.     for(int i=0; i<a.size; i++)
  147.         if(this->values[i]!=a.values[i])
  148.             return 1;
  149.     return 0;
  150. }
  151.  
  152. int vector::operator[] (int i)
  153. {
  154.     if(this->size < i+1)
  155.     {
  156.         std::cout << "Probujesz odczytac nieistniejaca w wektorze wartosc, zwracam 0";
  157.         return 0;
  158.     }
  159.     return this->values[i];
  160. }
  161.  
  162. vector vector::operator*= (int a)
  163. {
  164.     for(int i=0; i < this->size; i++)
  165.         this->values[i]*=a;
  166.     return *this;
  167. }
  168.  
  169. vector vector::operator* (int a)
  170. {
  171.     vector result(this->size);
  172.     for(int i=0; i < this->size; i++)
  173.         result.values[i]=this->values[i]*a;
  174.     return result;
  175. }
  176.  
  177. vector operator* (int a, vector x)
  178. {
  179.     vector result(x.size);
  180.     for(int i=0; i < x.size; i++)
  181.         result.values[i]=x.values[i]*a;
  182.     return result;
  183. }
  184.  
  185. std::istream & operator>> (std::istream & wejscie, vector x)
  186. {
  187.      for(int i=0; i < x.size; i++)
  188.          wejscie >> x.values[i];
  189.      return wejscie;
  190. }
  191.  
  192. std::ostream & operator<< (std::ostream & wyjscie, vector x)
  193. {
  194.      for(int i=0; i < x.size-1; i++)
  195.          wyjscie << x.values[i] << " ";
  196.      wyjscie << x.values[x.size-1] << std::endl;
  197.      return wyjscie;
  198. }
  199.  
  200.  
  201.  
  202. //main.cpp
  203.  
  204. #include "vector.h"
  205.  
  206. using namespace std;
  207.  
  208. int main()
  209. {
  210.     int choice, size1, size2, scalar;
  211.     cout << "Program testowy: 1) vector 2) matrix 0) wyjscie";
  212.     cin >> choice;
  213.  
  214.     switch (choice)
  215.     {
  216.         case 1:
  217.         {
  218.             cout << "Podaj rozmiar wektora a: ";
  219.             cin >> size1;
  220.             vector a(size1);
  221.             cout << "Podaj rozmiar wektora b: ";
  222.             cin >> size2;
  223.             vector b(size2);
  224.             cout << "Podaj skalar: ";
  225.             cin >> scalar;
  226.             cout << "Podaj wspolrzedne wektora a: ";
  227.             cin >> a;
  228.             cout << "Podaj wspolrzedne wektora b: ";
  229.             cin >> b;
  230.  
  231.             cout << endl << "----OPERACJE----" << endl;
  232.  
  233.             cout << "a + b = " << (a+b) << endl;
  234.             cout << "a - b = " << (a-b) << endl;
  235.             cout << "a * skalar = " << (a*scalar) << endl;
  236.             cout << "skalar * a= " << (scalar*a) << endl;
  237.             cout << "a == b -> " << (a==b) << endl;
  238.             cout << "a != b -> " << (a!=b) << endl;
  239.             break;
  240.         }
  241.         case 2:
  242.             break;
  243.  
  244.         default:
  245.             break;
  246.     }
  247.     return 0;
  248. }
  249.  
  250.  
  251. //output
  252. Program testowy: 1) vector 2) matrix 0) wyjscie1
  253. Podaj rozmiar wektora a: 4
  254. Podaj rozmiar wektora b: 4
  255. Podaj skalar: 3
  256. Podaj wspolrzedne wektora a: 1 2 3 4
  257. Podaj wspolrzedne wektora b: 5 6 7 8
  258.  
  259. ----OPERACJE----
  260. a + b = 0 0 6 8
  261.  
  262. a - b = 0 0 0 0
  263.  
  264. a * skalar = 0 0 9 12
  265.  
  266. skalar * a= 0 0 9 12
  267.  
  268. a == b -> 0
  269. *** glibc detected *** ./2: double free or corruption (fasttop): 0x00000000023aa030 ***
Advertisement
Add Comment
Please, Sign In to add comment