Код: Выделить всё
class base
{
private:
char* str;
int size;
public:
base(){size = 0; str = 0;}
base( char *str1)
{
size = strlen(str1);
str = new char[size+1];
strcpy(str,str1);
}
base (const base &bs3);
~base()
{
delete []str;
}
void print() { cout<<str<<endl;}
base operator + (base &bs);
base &operator = (base &bs1);
};
base base: :o perator +(base &bs)
{
base t;
t.size = size + bs.size;
t.str = new char [ t.size + 1 ];
strcpy(t.str,str);
if(strlen(strcat(t.str,bs.str)) > 20 ) throw 5;
int n=strlen(t.str);
for(int i=0;i < (n-1);i++)
{
if( t.str[i] == t.str[i+1])
{
for( int j=i; j < (n-1);j++)
t.str[j] =t.str[j+1];
t.str[n-1] = '\0';
}
else {float b=3.2;throw b;}
}
return t;
}
base& base: :o perator =(base &bs1)
{
if(this != &bs1)
{
if(size != bs1.size)
{
delete []str;
size = bs1.size;
str = new char [ bs1.size + 1 ];
}
strcpy(str,bs1.str);
}
return *this;
}
base::base(const base &bs3)
{
size = bs3.size;
str = new char [ bs3.size +1 ];
strcpy(str,bs3.str);
}
int main()
{
char obj1[80],obj2[80];char obj3[80];
try
{
cout<<" input:"<<endl;
cin>>obj1;
cin>>obj2;
base s1(obj1),s2(obj2);
base s3;
s3 =s1+s2;
if(strlen(obj1) >10 || strlen(obj2) >10) throw err("\n leave for boards\n");
s3.print();
}
catch( int arg ) { cout<<"\n so long"<<endl;}
catch( float arg ) { cout<<" without double symbols"<<endl;}
catch(err ob)
{
cerr << ob.get_error();
}
system("pause");
return 0;
}