Помогите доделать программу: Определить класс-строку. В класс включить два конструктора: для определения класса строки строкой символов и путем копирования другой строки (объекта класса строки). Предусмотреть функции сортировки слов в строке по-алфавиту и подсчёта количества слов.Подсчет количества слов я вроде бы сделал,работает,помогите с сортировкой по алфавиту. | Код | #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[i]==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:rint() { cout<<this->string<<endl; } myString::~myString() { delete []string;
}
void myString:perator --() { for (int i=0; i<strlen(string); i++) if (string[i]>='A' && string[i]<='Z') string[i]+=32; }
myString myString:perator =(const myString &source) { this->string=new char[strlen(source.string)+1]; strcpy(this->string,source.string); return *this; }
myString myString:perator -(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[i]==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[i]==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();
} |
Модератор: Не забываем пользоваться кнопочкой "Код"Это сообщение отредактировал(а) bsa - 16.11.2009, 14:10
|