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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перегрузка оератора = Совсем запутался. 
:(
    Опции темы
Martin_8
Дата 17.10.2006, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Выкладываю свой исправленный код. Нужны str и str2, так как таково условие. И записывать результирующую строку надо в str2. Много закомментированного т.к. код всё так ещё отладочный, на этот раз в VC6. Проблема с мусором осталась, подскажите, пожалуйста, как её решить.

Код

#include <iostream.h>    
#include <conio.h>    
#include <string.h>    
#include <stdio.h>    
#include <stdlib.h>    
   
class my_string    
{    
private:    
    //char *str, *str2;
    int i;
public:
    char *str, *str2;
    my_string(char *);    
    ~my_string();    
    void print(char *);
    const my_string& operator = (const my_string& x); // или   my_string& operator=(my_string x);
};

my_string::my_string(char *s="\0")    
{    
    str = new char [strlen(s)+1];    
    strcpy(str,s);    
    //str2 = new char [strlen(str)+1];    
    //str2 = new char [100];    
    cout<<"____Initsializatsiya vypolnena____\n";    
}
    
my_string::~my_string ()
{
    delete str;
    //delete str2;
    cout<<"\nStroka sterta iz pamyati. Rabota zavershena.\n";
}
void my_string::print (char *ss)
{
    //cout<<"Ishodnaya stroka do preobrazovania:"<<endl;
    cout<<endl<<"```````````````````````````````````"<<endl;
    puts(ss);
    cout<<"```````````````````````````````````"<<endl;
}

const my_string& my_string::operator = (const my_string& x)
{
    int j=0;
    int k =0;
    int l =0;

    cout<<"Kol-vo simvolov v stroke: "<<strlen(x.str);
    for (i=0; i<strlen(x.str); i++)
    {
        if (*(x.str+i)==' ')
        {
            k++;
        }
    }
    cout<<"\nKol-vo probelov v stroke: "<<k<<endl;
    if (k<2)
    {
        cout<<"Uslovie ne vypolnyaetsya, v stroke men'she 2-h probelov. Programma zavershaet rabotu!"<<endl;
        getch();
        abort();
    }
    str2 = new char [100];
    for (i=0; i<strlen(x.str); i++)
    {
        if (*(x.str+i)==' ')
        {
            l++;
        }
        if (l>=2)
        {
            //*(this->str+j)=*(x.str+i);   // запись изм. стр. в ту же переменную str но уже обьекта С (это прозволяет обойтись без str2)
            *(this->str2+j)=*(x.str+i);
            j++;
        }
    }
    return *this;
}


void main(void)
{
char sa[200];
    puts("Vvedite stroky:");
    gets(sa);
    cout<<endl;
    my_string A(sa);
    A.print (A.str);
    my_string C("");
    C=A;
    
    C.print(C.str2);
    getch();
}

PM   Вверх
Kuvaldis
Дата 17.10.2006, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

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



Martin_8, 
Исправления: после копирования слова после 2 пробела для корректности нужно в строку str2 дописать NULL символ. 

Код

 str2[j] = '\0';

Эту строчку вставь перед строкой
return *this;

P.S. Код, конечно ,у тебя корявый smile 

Это сообщение отредактировал(а) Kuvaldis - 17.10.2006, 23:03


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
Martin_8
Дата 18.10.2006, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Kuvaldis, 

Спасибо, то, что надо!
Знаю что корявый, на то я и ламер начинающий  smile 
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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