#include "Kvuca.h" int main(int argc, char* argv[]) { // do CKvuca myKvuca1, myKvuca2, myKvuca3, myKvuca4, myKvuca5; myKvuca1.num=3; myKvuca1.Arr[0]=1; myKvuca1.Arr[1]=3; myKvuca1.Arr[2]=2; myKvuca1.CANONIC(); myKvuca2.num=2; myKvuca2.Arr[0]=5; myKvuca2.Arr[1]=2; myKvuca2.CANONIC(); myKvuca3=myKvuca1+myKvuca2; myKvuca4=myKvuca1-myKvuca2; myKvuca5=myKvuca1*myKvuca2; return 0; } CKvuca::CKvuca() { num = 0; for( int i = 0; i < 9; i++ ) { Arr[i] = 0; } } CKvuca::~CKvuca() {} CKvuca CKvuca::operator-() { CKvuca res; res.num = num; int min; double a_min, a_max; a_max=0; for( int i = 0; i < num; i++ ) { a_min=999; min = i; for( int j = 0; j < num; j++ ) // do correction { if( Arr[j] < a_min && a_max < Arr[j] ) { min = j; a_min=Arr[j]; } } res.Arr[i] = Arr[min]; a_max=res.Arr[i]; } return res; } CKvuca CKvuca::operator+( CKvuca& o ) { CKvuca a = -(*this); CKvuca b = -o; CKvuca res; int i = 0; int j = 0; while( i < a.num && j < b.num ) { if( a.Arr[i] < b.Arr[j] ) { res.Arr[res.num] = a.Arr[i]; res.num++; i++; } else if( a.Arr[i] > b.Arr[j] ) { res.Arr[res.num] = b.Arr[j]; res.num++; j++; } else if( a.Arr[i] == b.Arr[j] ) { i++; j++; } } while( i < a.num ) { res.Arr[res.num] = a.Arr[i]; res.num++; i++; } while( j < b.num ) { res.Arr[res.num] = b.Arr[j]; res.num++; j++; } return res; } CKvuca CKvuca::operator-( CKvuca& o ) { CKvuca a = -(*this); CKvuca b = -o; CKvuca res; int i = 0; int j = 0; while( i < a.num && j < b.num ) { if( a.Arr[i] < b.Arr[j] ) { res.Arr[res.num] = a.Arr[i]; res.num++; i++; } else if( a.Arr[i] > b.Arr[j] ) { if(j< (b.num-1)) { j++; } else { res.Arr[res.num] = a.Arr[i]; res.num++; i++; } } else if( a.Arr[i] == b.Arr[j] ) { i++; j++; } } while( i < a.num ) { res.Arr[res.num] = a.Arr[i]; res.num++; i++; } while( j < b.num ) { res.Arr[res.num] = b.Arr[j]; res.num++; j++; } return res; } CKvuca CKvuca::operator*( CKvuca& o ) // do section { CKvuca a = -(*this); CKvuca b = -o; CKvuca res; int i = 0; int j = 0; while( i < a.num && j < b.num ) { if( a.Arr[i] < b.Arr[j] ) { i++; } else if( a.Arr[i] > b.Arr[j] ) { j++; } else if( a.Arr[i] == b.Arr[j] ) { res.Arr[res.num] = a.Arr[i]; res.num++; i++; j++; } } while( i < a.num ) { res.Arr[res.num] = a.Arr[i]; res.num++; i++; } /* while( j < b.num ) { res.Arr[res.num] = b.Arr[j]; res.num++; j++; } */ return res; } CKvuca CKvuca::operator~() { CKvuca res; CKvuca a = -(*this); int k = 1; for( int i = 0; i < num; ) { if( k < a.Arr[i] ) { res.Arr[res.num] = k; res.num++; k++; } else if( k == a.Arr[i] ) { i++; } } for( i = k+1; i < 9; i++ ) { res.Arr[res.num] = i; res.num++; } return res; } void CKvuca::CANONIC() { (*this) = -(*this); }