Классы и перегрузка
Определить класс-строку. В класс включить два конструктора: для определения класса строки строкой символов и путем копирования другой строки (объекта класса строки). Предусмотреть функции сортировки слов в строке по-алфавиту и подсчёта количества слов.Подсчет количества слов я вроде бы сделал,работает,помогите с сортировкой по алфавиту.
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
class stroka
{ char *ch;
int len;
public:
stroka (stroka&b)
{len = strlen(b.ch);ch = new char [len+1];
strcpy(ch,b.ch);
}
stroka (const char *arch)
{len = strlen(arch);ch = new char [len+1];
strcpy(ch,arch);
}
int& len_str(void)
{return len;}
char *string(void)
{return ch;}
void display(void)
{cout<<"\ndlina stroki:"<<len;
cout<<"\nsoderjimoe stroki:"<<ch<<endl;
}
~stroka(){delete [] ch;}
void poisk()
{int i, n=0;
char p=' ';
for(i=0;i<len;i++)
if(ch==p)
n=n+1;
cout<<"kolichestvo slov:"<<n<<endl;
}
};
void main()
{stroka a("Dobroe ytro");
a.display();
stroka c(a);
c.display();
a.poisk();
}
2.Определить класс-строку. В класс включить два конструктора: для опре-деления класса строки строкой символов и путем копирования другой стро-ки (объекта класса строки).
Определить операции над строками:
+ конкатенация двух строк;
++ преобразование символов строки в строчные (маленькие) символы.
вот моя решеная задача,помогите с конкатенацией:
#include "stdafx.h"
#include <iostream>
#include <string.h>
using namespace std;
class myString {
private:
char *string;
public:
myString();
myString(char *string);
myString(const myString &source);
~myString();
void print();
void operator --();
myString operator =(const myString&);
myString operator -(myString);
};
myString::myString()
{
this->string=new char[10];
strcpy(this->string,"N/A");
}
myString::myString(char *string)
{
this->string=new char[strlen(string)+1];
strcpy(this->string,string);
}
myString::myString(const myString &source)
{
this->string=new char[strlen(source.string)+1];
strcpy(this->string,source.string);
}
void myString::print()
{
cout<<this->string<<endl;
}
myString::~myString()
{
delete []string;
}
void myString::operator --()
{
for (int i=0; i<strlen(string); i++)
if (string>='A' && string<='Z')
string+=32;
}
myString myString::operator =(const myString &source)
{
this->string=new char[strlen(source.string)+1];
strcpy(this->string,source.string);
return *this;
}
myString myString::operator -(myString stroka)
{
char *help,*help2;
if (strlen(this->string)<=strlen(stroka.string))
{cout<<"Nevernie parametri stroki"<<endl;
return *this;
}
bool f=false;
int j=0,lasti;
for (int i=0; i<=strlen(this->string); i++)
{
if (!f)
{
if (this->string==stroka.string[0])
{
f=true;
lasti=i;
j=1;
if (j==strlen(stroka.string))
{
help=new char[lasti+1];
for (int k=0; k<lasti; k++)
{
help[k]=this->string[k];
}
help[lasti]='\0';
help2=new char[strlen(this->string)-lasti-strlen(stroka.string)+1];
for (int k=lasti+strlen(stroka.string); k<strlen(this->string); k++)
help2[k-lasti-strlen(stroka.string)]=this->string[k];
help2[strlen(this->string)-lasti-strlen(stroka.string)]='\0';
strcat(help,help2);
cout<<"Polu4enaya stroka:"<<help<<endl;
strcpy(this->string,help);
return *this;
}
}
}
else
{
if (this->string==stroka.string[j])
{
j++;
if (j==strlen(stroka.string))
{
help=new char[lasti+1];
for (int k=0; k<lasti; k++)
{
help[k]=this->string[k];
}
help[lasti]='\0';
help2=new char[strlen(this->string)-lasti-strlen(stroka.string)+1];
for (int k=lasti+strlen(stroka.string); k<strlen(this->string); k++)
help2[k-lasti-strlen(stroka.string)]=this->string[k];
help2[strlen(this->string)-lasti-strlen(stroka.string)]='\0';
strcat(help,help2);
strcpy(this->string,help);
return *this;
}
}
else
{
f=false;
i=lasti+1;
}
}
}
return *this;
}
int main()
{
char str[256];
cout<<"Vvedite stroky:";
cin.get(str,256);
myString stroka(str),
stroka2(stroka);
cout<<"Pervaya stroka:";
stroka.print();
cout<<"Vtoraya stroka:";
stroka2.print();
stroka--;
cout<<"Izmenenaya stroka:";
stroka.print();
cout<<"Vvedite eshe odnu stroky:";
cin>>str;
myString stroka3(str);
stroka2=stroka-stroka3;
cout<<"Polu4ennay stroka:"<<endl;
stroka2.print();
}
никто не может помочь?:(
Поможет)):)