Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Классы и перегрузка

49K
08 ноября 2009 года
dom1nator
8 / / 05.10.2009
Помогите доделать программу:
Определить класс-строку. В класс включить два конструктора: для определения класса строки строкой символов и путем копирования другой строки (объекта класса строки). Предусмотреть функции сортировки слов в строке по-алфавиту и подсчёта количества слов.Подсчет количества слов я вроде бы сделал,работает,помогите с сортировкой по алфавиту.
#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();

}
49K
15 ноября 2009 года
dom1nator
8 / / 05.10.2009
никто не может помочь?:(
51K
16 ноября 2009 года
smlenchik
5 / / 18.10.2009
Поможет)):)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог