#include #include #include #include #include using namespace std; # define N 20 struct DynamicStr{ char str[N]; int len; int operator>(DynamicStr &right) { if(strcmp(Str,right.str)>0)return 1; return 0; } friend istream & operator>>(istream & input,DynamicStr &m) { cout<<"\nEnterString"<>m.Str; m.Len=strlen(m.Str); return input; } friend ostream & operator>>(ostream & output,const DynamicStr &m) { output<<"\nString"<str!=NULL){ for(;istr; } //Переносим символы их присоединяемой строки в новую строку for (int k = 0;kstr = newstr; len = constrlen+len; } //Функция поиска подстроки в строе int StrPos(char* findstr){ char* x = strstr(this->str,findstr); if (x!=NULL) return x-this->str+1; else return -1; } //Функция удаления подстроки из строки void DeleteStr(char *_src) { if (_src==NULL) return; char* t; do{ t=strstr (this->str, _src); if (t!=NULL) { char* t_ = t + strlen (_src); strcpy (t, t_); } else break; } while (true); } //Перегружаем оператор присваивания DynamicStr& operator =(const DynamicStr &right) { if (&right!=this) SetStr(right.str); return *this; } //Перегружаем оператор сложения DynamicStr& operator +(const DynamicStr &right) { int i; if (str==NULL) return (DynamicStr &)right; if (right.str==NULL) return *this; char *s=new char[len+right.len+1]; for (i=0;i>(istream & input, DynamicStr &x) { char *tmp = new char[1001]; //временная память для вводимой строки cin.getline(tmp,1000); x.SetStr(tmp); delete[] tmp; return input; } //Перегружаем оператор "равно" bool operator == (const DynamicStr &x) const { if (len!=x.len) return false; for (int i=0;i(const DynamicStr &x) const { if (len>x.len) return true; for (int i=0;i(unsigned char)x.str[i]) return true; return false; } }; int main() { List*me_List=NULL; puts("Rabota spiskom"); my_list=Create_list(my_List); puts("Nash spisok"); Print_list(my_list); system("cls"); cout<<"Stroka:"<>otvet; fflush(stdin); switch(otvet){ case 1: { cout<<"Vvedite stroku:"; cin>>s; } break; case 2: cout<<"Dlina stroki:"<>s1; s=s+s1; cout<<"Novaya stroka"<