Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> классы и перегрузка, помогите доделать задание 
:(
    Опции темы
dom1nator
  Дата 15.11.2009, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 15.11.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[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
PM MAIL   Вверх
Kipter
Дата 16.11.2009, 01:49 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 2.5.2006

Репутация: нет
Всего: нет



Ваш код слишком красив и удобочитаемый чтобы вам помогать =)
PM MAIL   Вверх
bsa
Дата 16.11.2009, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196




M
bsa
dom1nator, читаем это, начиная с "Оформление кода".

PM   Вверх
dom1nator
Дата 16.11.2009, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 15.11.2009

Репутация: нет
Всего: нет



извените smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.6116 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.