Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 43
1

Перегрузка операций!

29.03.2012, 21:35. Показов 820. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, у меня есть код (работы со строками)
и нужно перегрузить операцию чтобы данный класс (текст). мог прибавлять к себе другой текст(можно и тот же) код работает, вот только не знаю как это осуществить.
Это класс стринг
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
#include <iostream>
#include <string>
using namespace std;
 
class Row {
    char *str;
 
public:
 
    Row();
    Row( const Row& s); 
    Row(const string);
    ~Row();
    const char* GetRow ();
 
Row& operator +(const Row& s); 
friend Row operator +(Row blabla);
 
 
 
/*
friend ostream& operator<<(ostream& const Row& str)
friend istream& operator>>(istream& s,complex& a)   
*/
 
    void get();
    void put();
    void putchar(int, char);
    void delchar(int);
    void clearstr();
    char array[256];
};
 
/*конструктор за замовчуванням*/
Row::Row() 
{str = new char[80];}
 
 
/* Деструктор */
Row::~Row(){
if(str!=NULL)
delete[] str;
str=NULL;
}
 
/*конструктор з параметрами*/
Row::Row(const string a) {
    this->str = new char[a.length()];
    for (int i = 0; i < a.length(); i++)
        str[i] = a[i];
    for (int j = a.length(); j < 80; j++) 
        str[j] = '\0';}
 
/*конструктор копіювання*/
Row::Row(const Row &str){ 
this->str = new char[80];
    for(int i = 0; i < 80; i++) {
        this ->str[i] = str.str[i];}
}
 
void Row::get() {
    cout << "\t";
    gets(str);
}
 
void Row::put() {
    puts(str);
}
 
 
void Row::putchar(int i, char z) {
    for(int j = 78; j > i-2; j--) {
        str[j+1] = str[j];
    }
    str[i-1] = z;
}
 
 
void Row::delchar(int i) {
    for(int j = i - 1; j < 80; j++) {
        str[j] = str[j+1];
    }
}
 
 
void Row::clearstr() {
    for (int i = 0; i < 80; i++) {
        str[i] = '\0';
    }
}
/*
Row& Row::operator +(const Row& s)
{
 
 
}*/
========================
Это класс текст в агригации со стрингом
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
 
#include <iostream>
using namespace std;
 
class Text {
     Row *text;
     int nums;
public:
     Text();
     Text(int);
     void add(const Row&);
     void print();
     void delstring(int);
};
 
 
/*конструктор за замовчуванням*/
Text::Text() {
this->  text = new Row[1];
    nums = 0;
}
 
 
/*конструктор з параметрами*/
Text::Text(int stramount) {
this ->text = new Row[stramount];
    nums = 0;
}
 
 
void Text::add(const Row& string) {
    text[nums] = string;
    nums++;
}
 
 
void Text::print() {
    for(int i = 0; i < nums; i++) {
        cout << "\t";
        text[i].put();
    }
}
 
 
void Text::delstring(int n) {
    for(int i = n - 1; i < nums - 1; i++) {
        text[i] = text[i+1];
    }
    text[nums - 1].~Row();
    nums--;
}
==============
а здесь я ввожу сам текст
============
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
#include <iostream>
#include <cstring>
#include <cstdio>
#include "strings.h"
#include "text.h"
 
using namespace std;
 
int main() {
    Text t1(3);
    Row str1, str2, str3,str4;
    setlocale(LC_CTYPE,"Russian");
    cout << "Введiть текст ";
    str1.get();
    t1.add(str1);
    str2.get();
    t1.add(str2);
    str3.get();
    t1.add(str3);
    cout << "Текст 1 \n: "<<endl;;
    t1.print();
    
    /*вставка символа в рядок*/
    str1.putchar(5, 'DD');
    cout << "Текст 2 \n: ";
    t1.print();
 
    /*видалення символа з рядка*/
    str1.delchar(5);
    cout << "Текст 3: \n "<<endl;
    t1.print();
 
 
    /*очищення рядка*/
    str2.clearstr();
    cout << "Tекст 4 \n: "<<endl;
    t1.print();
 
    cin.get();
    cin.get();
    return 0;
}
Буду очень признательна,спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.03.2012, 21:35
Ответы с готовыми решениями:

Перегрузка операций
Не могу понять в чем ошибка. Нужно вводитьномер в формате (123) 456-789 Но почему то только...

Перегрузка операций
Данная программа выполянет операции с дробями. Но у меня возникла проблема. Я создал сервисную...

Перегрузка операций
#include &lt;iostream&gt; using namespace std; class chislo { public: chislo(); chislo(int...

Перегрузка операций += и -=
Объясните, пожалуйста, как правильно выполнить перегрузку операций += и -=? При такой реализации...

3
54 / 54 / 9
Регистрация: 24.09.2011
Сообщений: 149
29.03.2012, 22:12 2
C++
1
2
3
Row operator+(const Row&) const;
friend Row operator+(const Row&, const char*);
friend Row operator+(const char*, const Row&);
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Row Row::operator+(const Row& s) const
{
    Row temp;
    temp.str = new char[strlen(this->str) + strlen(s.str) + 1];
    strcpy(temp.str, str);
    strcat(temp.str, s.str);
    return temp;
}
Row operator+(const Row& s, const char* s1)
{
    return (s+Row(s1));
}
 
Row operator+(const char* s1, const Row& s)
{
    return (s+Row(s1));
}
0
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 43
30.03.2012, 01:34  [ТС] 3
спасибо, а как можно перегрузить ввод и вывод?
(>>,<<)
0
Эксперт С++
8482 / 6149 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
30.03.2012, 05:11 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
friend ostream &operator << (ostream &stream,Row R);
friend istream &operator >> (istream &stream,Row &R);
//------------------------------------------------------------------------------
ostream &operator << (ostream &stream,Row R)
{
stream<<R.str<<endl;
return stream;
}
//------------------------------------------------------------------------------
istream &operator >> (istream &stream,Row &R)
{
stream>>R.str;
return stream;
}
0
30.03.2012, 05:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.03.2012, 05:11
Помогаю со студенческими работами здесь

Перегрузка операций
C++ ругается когда я пытаюсь сделать след-ю перегрузку операций. У меня трехмерный массив matrix и...

Перегрузка операций
Уважаемые программисты! Помогите новичку! Мне нужно написать программу, в которой реализуется...

Перегрузка Операций C++
Прошу помочь с кодом(а именно задание &quot;е&quot;). Буду очень благодарен! Создать базовый класс...

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

Перегрузка операций
Начал изучать перегрузку операций, и чего-то вроде не понял или что... Вообщем не могу понять чего...

Перегрузка операций - , -- , -=
Создать класс, который хранит целое девятеричное число без знака. Перегрузить операции -, --, -=....


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

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