Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2010, 22:42   #1
cati
Пользователь
 
Регистрация: 19.04.2010
Сообщений: 11
По умолчанию С++ перегрузка оператора

Задача.
Создать несколько объектов (например а и b ) разработанного класса. Класс - символьная строка. Реализовать для объектов данного класса перегрузку операции -=(b-=а). Содержимое объектов (а, b, их строк) до и после выполнения операции, вывести на экран.
Проверьте пожалуйста код программы и помогите исправить ошибки.
Код:
#include <iostream>
#include <cstdio>
#include "string.h"
using namespace std;

class String
{
private:
    char str[100];  
public:
    String();
    String(char *s);
    String(const String &);
    ~String();
     String operator-=(String op);
    void input();
    void see();
};

String::String()  
{
    strcpy(str,"");
}

String::String(char *s)  
{
    strcpy(str,s);
}

String::String(const String &a)  
{
     
    strcpy(str,a.str);  
}

String::~String()
{
    //if(str) delete [] str;
}

String String:: operator-=(String op)
{
    str=op.str-str;
    return *this;
}


void String::see()
{
    cout<<"new string: "<<str<<endl;
}

void String::input()
{
    cout << "Enter String: ";
    gets(str); 
}

int main()
{
    String a,b;
    a.input();
    b.input();
    b-=a;
    b.see();

    return 0;
}
cati вне форума Ответить с цитированием
Старый 20.04.2010, 09:32   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А что должен делать перегруженный оператор?
Обычно со строками так не поступают, это не числа.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.04.2010, 12:15   #3
cati
Пользователь
 
Регистрация: 19.04.2010
Сообщений: 11
По умолчанию

перегруженный оператор должен от одной строки отнять другую
cati вне форума Ответить с цитированием
Старый 20.04.2010, 12:21   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

т.е. удалить из одной строки подстроку конкретного содержания?
И опять таки все вхождения подстроки или только первое?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.04.2010, 13:39   #5
cati
Пользователь
 
Регистрация: 19.04.2010
Сообщений: 11
По умолчанию

например:
b= "happy birthday"
a="birthday"
b=b-a т.е happy = happy birthday - birthday
cati вне форума Ответить с цитированием
Старый 20.04.2010, 13:58   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А если
b= "happy birthday happy love"
a="happy "
b=b-a = ?

Ты не подумай я не придираюсь, просто как-то применять арифметические операции к строкам не очень принято.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.04.2010, 14:03   #7
cati
Пользователь
 
Регистрация: 19.04.2010
Сообщений: 11
По умолчанию

А как применить данную перегрузку(-=) к строкам?
cati вне форума Ответить с цитированием
Старый 20.04.2010, 14:06   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Так в том то и дело что тут двоякий смысл.
Либо удалить из строки перую попавшуюся подстроку, и думать что это вычитание (birthday happy love), либо удалить из строки все подстроки, а не только первую (birthday love).
Тут преподаватели ловить очень на таких задачах любят, потому и нужно у ниху точнять
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.04.2010, 14:56   #9
cati
Пользователь
 
Регистрация: 19.04.2010
Сообщений: 11
По умолчанию

подскажите код удаления из одной строки подстроки конкретного содержания
cati вне форума Ответить с цитированием
Старый 20.04.2010, 15:20   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Это можно:
http://www.programmersforum.ru/showthread.php?t=6569
Вот отсюда:
http://yandex.ua/yandsearch?date=&te...mdoc=50&lr=187
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перегрузка оператора << z3rg Общие вопросы C/C++ 18 02.03.2010 02:58
перегрузка оператора [] в c++ terminadoor Общие вопросы C/C++ 3 21.01.2010 15:44
Перегрузка оператора + z3rg Общие вопросы C/C++ 1 22.03.2009 03:06
Перегрузка оператора + (С++) MjRed Помощь студентам 1 15.12.2008 18:57
Перегрузка оператора Crucian Общие вопросы C/C++ 2 22.10.2007 09:44