Добавил:
korayakov
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабы / неТельминов / lab5 / LAB5(vector)
.CPP#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;
}