Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / неТельминов / lab5 / LAB5(vector)

.CPP
Скачиваний:
32
Добавлен:
16.04.2013
Размер:
2.08 Кб
Скачать
#define MAX 10

#include <stdlib.h>
#include <iostream.h>
#include <conio.h>

class TVector {
  int *base;
  int size;
public:
  TVector(int n);
  TVector(TVector& a);
  ~TVector();

  int operator++();
  TVector operator=(TVector a);
  TVector operator&(TVector a);


  void show();
};

// first constructor
void TVector::TVector(int n){
  int i;
  size=n;
  base=new int[size];

  for(i=0;i<size;i++) base[i]=-MAX+random(2*MAX);

}

// second constructor
void TVector::TVector(TVector& a){
   int i;
   size=a.size;
   base=new int[size];

   for(i=0;i<size;i++) base[i]=a.base[i];

}

// destructor
void TVector::~TVector(){
   size=0;
   delete [] base;
}


// show vector
void TVector::show(){
  int i;
  cout<<'{';
  for(i=0;i<size;i++) {
     cout<<base[i];
     if (i != size-1) cout<<';';
  }
  cout<<'}';
}

// ++ operator
// returns the highest element of vector
int TVector::operator++(){
  int i, max=base[0];
  for(i=1;i<size;i++) if (base[i]>max) max=base[i];

  return max;
}


// = operator
TVector TVector::operator=(TVector a){
  if (a.size!=size) {
    cout << "error: sizes of vectors are not equal\n";
    exit(1);
  } else {
    int i;
    for(i=0;i<size;i++) base[i]=a.base[i];
    return *this;
  }
}

// & operator
TVector TVector::operator&(TVector a){
  if (a.size!=size) {
    cout << "error: sizes of vectors are not equal\n";
    exit(1);
  } else {

    int i;
    TVector temp(size);

    for(i=0;i<size;i++)
      temp.base[i]=(base[i]>a.base[i]?base[i]:a.base[i]);
    return temp;
  }
}

// code
int main(void){
  randomize();
  clrscr();

  TVector a(3), b(a), c(3);

  cout << ">> TVector a(3), b(a), c(3)\n";
  cout << "vector a: "; a.show();
  cout << "\nvector b: "; b.show();
  cout << "\nvector c: "; c.show();


  cout << "\n>> Maximal element of a: " << ++a;
  cout << "\n>> a=b&c\n"; a=b&c;
  cout << "vector b: "; b.show();
  cout << "\nvector c: "; c.show();
  cout << "\nvector a: "; a.show();

  return 0;
}