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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2010, 18:50   #1
TopoRRR
Пользователь
 
Регистрация: 14.12.2009
Сообщений: 10
Восклицание Класс "строка"

Доброго времени суток господа! кто может подсказать вот такую вещь.

есть задание:
написать класс "строка", в который должен:
1) складывать 2 подстроки
2) выполнять замену подстрок
3) менять длину строки

в качестве примера должно было быть следующее:
- есть строка "hello, "
- к ней добавляется "Vasyek" и "!" -> итог "hello, Vasyek!"
- замена "hello" на "bye" -> итог "bye, Vasyek!"
- замена "ye" на "some" -> итог "bsome, Vassomek!"
- подсчет длины строки -> в данном случае 16
- изменение длины строки -> например (3) итог "bso"

вот то что я набросал:
Код:
#include <iostream>
#include <cstring>
#include <string>
 
using namespace std;
 
class myString
{
private:
        string str1;
        string str2;
        string str;  
        string old;
        string zam;
        int dln; 
        int pos; 
 
public:
        myString();
        ~myString();
        void Set(); 
        string& Rep();
};
 
myString::myString()
{
        str2="";
        str1="";
        str=""; 
        old="";
        zam="";
        pos=0;
        dln=0;
}
 
myString::~myString()
{
}
 
 
string& myString::Rep () 
{       
        while((pos=str1.find(old))!=-1)
    str1.replace(pos,old.length(),zam);
    cout << str1;
        cout << "\n dlina stroki:" <<str1.length() << endl; 
        cout << "\n novaya dlina:" ;
        cin >> dln; 
        str1.resize (dln); 
    
    return str1; 
} 
 
void myString::Set() 
{    
        str1="hello, ";
        cout << "\ntext:" << str1 << endl;//
        cout << "\nprodolzhenie:";
        getline (cin, str2); 
        str1=str1+str2; 
        str1+="!"; 
        cout << "\ntext: " << str1 << endl;
        pos = str1.find ("hello");
        str1.replace (pos, 5 , "bye"); 
        cout << "\nzamena: " << str1 << endl;
        cout << "\nenter old: "; 
        getline(cin, old);
        cout << "\nenter new: ";
        getline(cin, zam);
        cout << "\nok\n";
        
        
}
 
 
int main ()
{
        myString s, str1;
        s.Set();
    cout << "\n novaya stroka: \n" << s.Rep() << endl;
 
 
        system ("pause"); 
        return 0;
}
в принципе оно работает, НО написано криво в ответ я получил что необходимо чтобы в main был такой код:

Код:
/*
          // Я считаю, что myString уже есть
        myString str1, str2;
        
        str1="hello, "; // инициализирую строку
        cin >> str2; // считываю строку (например Vasyek)
        str1=str1+str2; // конкатенация (str1 = "hello, Vasyek")
        str1+="!"; // тоже конкатенация (str1 = "hello, Vasyek!")
        str1.replace("hello", "bye"); // одиночная замена (str1 = "bye, Vasyek!")
        str1.replaceAll ("ye", "some"); // множественная замена (str1 = "bsome, Vassomek!")
        cout << str1.getLength(); // str1.getLength() = 16
        str1.setLength(3); // (str1 = "bso")
        return (0);
*/
помогите поменять то что накарябано!!!!!!
TopoRRR вне форума Ответить с цитированием
Старый 13.01.2010, 19:11   #2
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

если ты не понимаешь задания - зачем тогда браться?!

Вот какраз в мейне и есть сама суть, добавление, замена участка и смена длины, а ты должен под него в классе составить необходимые методы, чтобы это было можно осуществлять
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Старый 13.01.2010, 19:35   #3
TopoRRR
Пользователь
 
Регистрация: 14.12.2009
Сообщений: 10
По умолчанию

я понимаю что нужно в классе создать методы, но есть вопрос,
Код:
        str1.replace("hello", "bye"); // одиночная замена (str1 = "bye, Vasyek!")
        str1.replaceAll ("ye", "some"); // множественная замена (str1 = "bsome, Vassomek!")
как передать данные (то что нужно поменять и на что) в метод????
TopoRRR вне форума Ответить с цитированием
Старый 13.01.2010, 19:43   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а параметры на что?
метод это же по сути функция...просто привязанная к классу
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 13.01.2010, 20:11   #5
TopoRRR
Пользователь
 
Регистрация: 14.12.2009
Сообщений: 10
По умолчанию

блин, вот в этом проблема, метод написать смогу, а вот как передать то???уже с десяток книг пересмотрел так и не понял!
TopoRRR вне форума Ответить с цитированием
Старый 13.01.2010, 20:17   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
class myString
{
private:
        string str1;
        string str2;
        string str;  
        string old;
        string zam;
        int dln; 
        int pos; 
 
public:
        myString();
        ~myString();
        void Set(); 
        string& Rep();
        void replace(char*,char*);
};

void myString::replace(char* o,char* n)
{
//реализуйте сами
//o это то что надо заменить
//n на что заменить
}
а как вызывать то пример у вас самих есть
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 13.01.2010, 20:59   #7
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

Ну да, если перелистать десяток книг по биологии - вы, наверное, не найдете способа передат ьпараметры в функцию\метод. Но если они по программирвоанию - то.... делайте вобщем выводы сами, я не буду обижать
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
простенький класс "строка" на С++ TopoRRR Помощь студентам 0 14.12.2009 22:31
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Класс "векторные операции" для трехмерных векторов. Студентка@ Помощь студентам 1 30.01.2008 19:21
PCHAR строка с разделителями #13#10. Как вычленить отдельные "подстроки" EdNovice Общие вопросы Delphi 1 17.04.2007 11:42