1352 / 851 / 365
Регистрация: 26.02.2015
Сообщений: 3,799
1

Метод класса слева от знака равно

28.02.2015, 21:30. Показов 1173. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребят, выполняю задание из книги Р. Лафоре:
Кликните здесь для просмотра всего текста

В некоторых компьютерных языках есть операции, с помощью которых можно выделить часть строки и просвоить ее другой строке. Используя наследование, добавьте такую возможность в класс Pstring из упражнения 2. В новом производном классе Pstring2 разместите три новых функции left(), mid() и right().
s2.left(s1, n);
s2.mid(s1, s, n);
s3.right(s1, n);
Вы можете использовать цикл for для копирования символ за символом подходящих частей строки s1 во временный объект класса Pstring2, который затем их возвратит. Для получения лучшего результата используйте в этих функциях возврат по ссылке, чтобы они могли быть использованы с левой стороны знака "равно" дли изменения части существующей строки.

Вот, что я сделал:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include <iostream>
using namespace std;
#include <string.h>
 
//---------------------------------------------------------------------------//
//---------------------------------------------------------------------------//
class String{
    protected:
        static const int SIZE = 80;
        char str[SIZE];
    public:
        String(){
            str[0] = '\0';
        }
        String(char s[]){
            strcpy(str, s);
        }
        void Display() const{
            cout << str << endl;
        }
        operator char *(){
            return str;
        }
};
//---------------------------------------------------------------
//Определение  производного  от  String  класса  Pstring. Класс наследует все
//возможности  класса  String и добавляет к ним возможность соблюдения границ
//массива для хранения строки------------//
//---------------------------------------------------------------------------//
class PString : public String{
    public:
        PString() : String()
        {}
        PString(char s[]){
            if(strlen(s) > SIZE - 1){
                int i = 0;
                for(i = 0; i < SIZE - 1; i++){
                    str[i] = s[i];
                }
                str[i] = '\0';
            }else{
                strcpy(str, s);
            }
        }
};
//---------------------------------------------------------------
//Определение  производного  от  PString  класса PSting2. Класс наследует все 
//возможности  своего  родителя,  а  так же добавляет функции для возможности
//извлечения указанных символов из строки------------//
//---------------------------------------------------------------------------//
class PString2 : public PString{
    public:
        PString2() : PString()
        {}
        PString2(char s[]) : PString(s)
        {}
        PString2& left(PString2 s, int n){
            bool flag = (strlen(str) == 0) ? true : false;
            int i = 0;
            for(i = 0; i < n; i++){
                this->str[i] = s.str[i];
            }
            if(flag){
                str[i] = '\0';
            }
            return PString2(str);
        }
        PString2 mid(PString2 s, int n, int m){
            bool flag = (strlen(str) == 0) ? true : false;
            int i = 0, j = 0;
            for(i = n, j = 0; i < m; i++, j++){
                this->str[j] = s.str[i];
            }
            if(flag){
                str[j] = '\0';
            }
            return PString2(str);
        }
        PString2& right(PString2 s, int n){
            bool flag = (strlen(str) == 0) ? true : false;
            int i = 0, j = 0;
            for(i = n, j = 0; i < strlen(s); i++, j++){
                this->str[j] = s.str[i];
            }
            if(flag){
                str[j] = '\0';
            }
            return PString2(str);
        }
};
 
int main(){
    setlocale(LC_ALL, "Russian");
 
    PString2 a = "AAAAAA";
    PString2 b = "BBBBBB";
    PString2 c = "CCCCCC";
 
    b.mid("sdfqwer", 3, 5) = c;
    a.Display();
    b.Display();
    c.Display();
 
    system("PAUSE");
    return 0;
}


Уверен, что сделал неправильно. Скажите, как реализовать "могли быть использованы с левой стороны знака "равно" дли изменения части существующей строки."
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.02.2015, 21:30
Ответы с готовыми решениями:

Вызов функции слева от знака равно
Эта запись взорвала мой мозг. Что это вообще ещё такое? Так-то понятно,что это,но зачем. char...

Как передать в метод класса Menu указатель на метод дочернего класса?
Как передать в метод базового класса указатель на метод дочернего: class Menu() { protected: ...

Ответ после знака равно
Здравствуйте,такая вот проблема,не знаю как сделать что бы после знака равно выдавало нужный...

Выбрать URL без знака равно
Доброго времени суток! С новым годом! Есть такой код с выражением: preg_match_all('|http:\/\/'...

1
Модератор
Эксперт С++
13502 / 10754 / 6409
Регистрация: 18.12.2011
Сообщений: 28,700
28.02.2015, 21:52 2
C++
1
2
3
4
5
char& mid(PString2 s, int n, int m)
{
  ....
            return *(str+n); // Возвращаем ссылку на n-й символ результирующей строки
}
Тогда можно написать
C++
1
b.mid("sdfqwer", 3, 5) = 'C';
1
28.02.2015, 21:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.02.2015, 21:52
Помогаю со студенческими работами здесь

Откинуть значение после знака равно
Всем привет. Пишу функцию, но что то встрял в одном месте: setprop(){ bp=/system/build.prop if...

Перебор символьного массива до знака равно
Всем привет. Проблема с функцией. По идее str-это ведь массив. Тогда почему при вызове к примеру...

Как вызвать определенный метод переданного класса через метод другого класса?
Добрый день. Захотел я вызвать в методе класса метод некоего другого класса, о котором я пока не...

Числа Люка определяются так: первое число равно 1, второе равно 3, каждое следующее равно сумме двух предыдущих. Состави
Задание Числа Люка определяются так: первое число равно 1, второе равно 3, каждое следующее равно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru