
Добавил:
bagiwow
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование / си++ / 2Semestr / Lab_5v3 / Fun
.cpp//Fun.cpp
#include "Class.h"
int MAX=10;
//------------------------------------------------------------------------
void Rus(char *Str)
{
unsigned char c;
for(int i=0;Str[i]!='\0';i++)
{
c=Str[i];
if(c>127)
{
if(c<240)c-=64;
else c-=16;
}
cout<<c;
}
}
//------------------------------------------------------------------------
Set::Set()
{
beg=new char [max_s=MAX];
len=0;
}
//------------------------------------------------------------------------
Set::Set(int t)
{
max_s=t;
beg=new char [max_s];
len=0;
}
//------------------------------------------------------------------------
Set::~Set()
{ delete[] beg; }
//------------------------------------------------------------------------
void Set::Insert (char* str)
{
if(strlen(str)>max_s) Rus(" Неверное кол-во сиволов \n");
else
{
len=strlen(str);
for(int i=0;i<len;i++)
{
if(!ToBe(beg[i])) beg[i]=str[i];
else
{
Rus(" Вы дважды ввели один элемент, он заменится на $ ");
beg[i]='$';
cout<<endl;
}
}
}
}
//------------------------------------------------------------------------
void Set::Print()
{
if(!len) Rus("Пустое множество \n");
else
Rus(" Множество : ");cout<<endl;
for(int i=0;i<len;i++)
cout<<*(beg+i)<<endl;
}
//------------------------------------------------------------------------
bool Set::ToBe(char c)
{
char* t=this->beg;
for(int i=0;i<len;i++)
if(t[i]==c) return true;
return false;
}
//------------------------------------------------------------------------
Set& Set::operator=(const Set& Obj)
{
if(this==&Obj) return *this;
delete[] beg;
len=Obj.len;
beg=new char [len];
strcpy(beg,Obj.beg);
return *this;
}
//------------------------------------------------------------------------
bool Set::operator>(Set& Obj)
{
int Len=0;
if(len<Obj.len) return false;
for(int i=0;i<len;i++)
{
if(ToBe(Obj.beg[i])) Len++;
}
if (Len==Obj.len) return true;
return false;
}
//------------------------------------------------------------------------
char ToRus(unsigned char c)
{
if(c>127)
{
if(c<240)c-=64;
else c-=16;
}
return c;
}
//------------------------------------------------------------------------
void operator -(Set& Obj, char c)
{
c=ToRus(c);
if(!Obj.ToBe(c))
Rus(" Такого элемента нет ! \n");
else
{
int i,j=0;
Obj.len-=1;
char* t=new char[Obj.len];
for(i=0;i<Obj.len+1;i++)
{
if(Obj.beg[i]!=c)
{
t[j]=Obj.beg[i];
j++;
}
}
delete[] Obj.beg;
Obj.beg=t;
}
}
//------------------------------------------------------------------------
bool Set::operator != (Set& Obj)
{
if(len!=Obj.len) return true;
if(strcmp(beg,Obj.beg)) return false;
return true;
}
//------------------------------------------------------------------------