Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ArniLand
4 / 4 / 0
Регистрация: 07.09.2009
Сообщений: 190
#1

Класс контейнер - работа со строками - C++

31.03.2010, 19:07. Просмотров 630. Ответов 0
Метки нет (Все метки)

Написал программу по следующему задание:
Класс контейнер - абстракция текста, метод удаления одной, метод добавления строки, метод очистки текста, метод измерения самой длинной строки, метод вывода. Пишу в VS 2008 professional.
У меня возникли две проблемы:
1. Из класса text мне нужно перенести метод string getMaxLenghtRow() в класс Row и реализовать его в файлик Row.cpp, но после переноса мне выдает следующую ошибку, подскажите как ее исправить. Смысл ошибки я понимаю, я не понимаю как правильно организовать в программе чтобы не выбивало эту ошибку, покажите пожалуйста по возможности уже в исправленном коде как должно быть.
Row.cpp
d:\мои документы\visual studio 2008\projects\laba3_cpp\laba3_cpp\row.cpp(15) : error C2065: 'texte' : undeclared identifier
d:\мои документы\visual studio 2008\projects\laba3_cpp\laba3_cpp\row.cpp(15) : error C2228: left of '.dataRow' must have class/struct/union
d:\мои документы\visual studio 2008\projects\laba3_cpp\laba3_cpp\row.cpp(16) : error C2065: 'amountRows' : undeclared identifier
d:\мои документы\visual studio 2008\projects\laba3_cpp\laba3_cpp\row.cpp(18) : error C2065: 'texte' : undeclared identifier
d:\мои документы\visual studio 2008\projects\laba3_cpp\laba3_cpp\row.cpp(18) : error C2228: left of '.dataRow' must have class/struct/union
d:\мои документы\visual studio 2008\projects\laba3_cpp\laba3_cpp\row.cpp(18) : error C2228: left of '.length' must have class/struct/union
d:\мои документы\visual studio 2008\projects\laba3_cpp\laba3_cpp\row.cpp(20) : error C2065: 'texte' : undeclared identifier
d:\мои документы\visual studio 2008\projects\laba3_cpp\laba3_cpp\row.cpp(20) : error C2228: left of '.dataRow' must have class/struct/union
2. Нужно добавить метод в text.h, ну и соотвественно text .cpp и чтобы выводилось в main.cpp, который будет удалять символ из сроки, например строка "abcdft" и нужно удалить из нее символ "а", тоже покажите пожалуйста по возможности уже в написанном коде как должно быть. Реализацию метода можно сделать как то так думаю, но как организовать в программе свой не пойму.
C++
1
2
String s = "aljfhwfhgc vwiu";
s.Delete(10, 5)
Код программы:
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
//Row.h
#pragma once
#include "stdafx.h"
#include <string>
#include <iostream>
 
using namespace std;
 
class Row
{
public:
    string dataRow;
    Row();
    Row(string);
    string getMaxLenghtRow();
};
 
//Row.cpp
#pragma once
#include "stdafx.h"
#include "Row.h"
const int countRows = 100;
 
//Text.h
class Texts
{
public:
    
    Texts();
    void addRow(string str);
    void removeRow(int numberRow);
    void removeAll();
    
    string ToString();
    Row texte[100];
    int amountRows;
};
 
//text.cpp
#include "text.h"
#include "stdafx.h"
 
Texts::Texts()
{
    amountRows = 0;
}
void Texts::addRow(string str)
{
 
    texte[amountRows].dataRow = str;
    
    amountRows++;
}
void Texts::removeRow(int numberRow)
{
    for (int i = numberRow; i < (countRows - 1); i++)
    {
        texte[i] = texte[i + 1];
    }
    texte[countRows - 1].dataRow = "";
    amountRows--;
}
void Texts::removeAll()
{
    
    for (int i = 0; i < countRows; i++)
    {
        texte[i].dataRow = "";
    }
    amountRows = 0;
}
 
 
 
string Texts::ToString()
{
    string str = "";
    for (int i = 0; i < amountRows; i++)
    {
        str = str + " " + texte[i].dataRow;
    }
 
    return str;
}
 
//main.cpp
#include "text.h"
#include "Row.h"
 
 
void main()
{
    cout<<"Vvedit kilkist ryatkiv: ";
    
    int countRow;
    
    cin>>countRow;
            
    cout<<"Vvedit ryadki: ";
    
    Texts objText;
    Row objRow;
    
    string temp;
 
    for (int i = 0; i < countRow; i++)
    {
        
        cin>>temp;
        objText.addRow(temp);
    }
    
    cout<<"------------------\n\n"<<objText.ToString()<<"\n------------------\n";
 
    cout<<"\nVvedit nomer ryadka dlya vudalennya: ";
    
    int numberOfRow;
    
    cin>>numberOfRow;
     
    if (numberOfRow < countRow)
    {
        
        objText.removeRow(numberOfRow - 1);
    }
 
    cout<<"------------------\n\n"<<objText.ToString()<<"\n------------------\n";
 
    cout<<"\nNaydovshiy ryadok v teksti: " + objRow.getMaxLenghtRow();
 
    
 
    cout<<"\nOchischennya texty.";
    
    objText.removeAll();
    cout<<"------------------\n\n"<<objText.ToString()<<"\n------------------\n";
}
Добавлено через 51 минуту
Забыл добавить реализацию класса Row. Теперь исправил, вот нужный код программы:

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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
//Row.h
#pragma once
#include "stdafx.h"
#include <string>
#include <iostream>
 
using namespace std;
 
class Row
{
public:
    string dataRow;
    Row();
    Row(string);
    string getMaxLenghtRow();
};
 
//Row.cpp
#include "Row.h"
#include "text.h"
 
Row::Row()
{
}
 
Row::Row(string str)
{
    dataRow = str;
}
 
string Row::getMaxLenghtRow()
{ 
    string max = texte[0].dataRow;
    for (int i = 1; i < amountRows; i++)
    {
        if (texte[i].dataRow.length() > max.length())
        {
            max = texte[i].dataRow;
        }
    }
 
    return max;
} 
//Text.h
class Texts
{
public:
    
    Texts();
    void addRow(string str);
    void removeRow(int numberRow);
    void removeAll();
    
    string ToString();
    Row texte[100];
    int amountRows;
};
 
//text.cpp
#include "text.h"
#include "stdafx.h"
 
Texts::Texts()
{
    amountRows = 0;
}
void Texts::addRow(string str)
{
 
    texte[amountRows].dataRow = str;
    
    amountRows++;
}
void Texts::removeRow(int numberRow)
{
    for (int i = numberRow; i < (countRows - 1); i++)
    {
        texte[i] = texte[i + 1];
    }
    texte[countRows - 1].dataRow = "";
    amountRows--;
}
void Texts::removeAll()
{
    
    for (int i = 0; i < countRows; i++)
    {
        texte[i].dataRow = "";
    }
    amountRows = 0;
}
 
 
 
string Texts::ToString()
{
    string str = "";
    for (int i = 0; i < amountRows; i++)
    {
        str = str + " " + texte[i].dataRow;
    }
 
    return str;
}
 
//main.cpp
#include "text.h"
#include "Row.h"
 
 
void main()
{
    cout<<"Vvedit kilkist ryatkiv: ";
    
    int countRow;
    
    cin>>countRow;
            
    cout<<"Vvedit ryadki: ";
    
    Texts objText;
    Row objRow;
    
    string temp;
 
    for (int i = 0; i < countRow; i++)
    {
        
        cin>>temp;
        objText.addRow(temp);
    }
    
    cout<<"------------------\n\n"<<objText.ToString()<<"\n------------------\n";
 
    cout<<"\nVvedit nomer ryadka dlya vudalennya: ";
    
    int numberOfRow;
    
    cin>>numberOfRow;
     
    if (numberOfRow < countRow)
    {
        
        objText.removeRow(numberOfRow - 1);
    }
 
    cout<<"------------------\n\n"<<objText.ToString()<<"\n------------------\n";
 
    cout<<"\nNaydovshiy ryadok v teksti: " + objRow.getMaxLenghtRow();
 
    
 
    cout<<"\nOchischennya texty.";
    
    objText.removeAll();
    cout<<"------------------\n\n"<<objText.ToString()<<"\n------------------\n";
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2010, 19:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Класс контейнер - работа со строками (C++):

класс-контейнер - C++
ArrayList — реализует интерфейс List. Как известно, в Java массивы имеют фиксированную длину, и после того как массив создан, он не может...

Класс-Контейнер Вектор - C++
I Дана последовательность целых чисел Подсчитать сумму элиментов, расположенных между минимальным и максимальным элементами...

Класс-контейнер вектор - C++
как в векторе определить является ли сумма элементов простым числом??

Класс-Контейнер Вектор - C++
Как подсчитать в векторе из целых чисел количество максимальных элементов?

Полиморфизм, класс-контейнер - C++
Доброго времени суток. Есть базовый класс и три наследника. Необходимо создать класс-контейнер, владеющий динамическим списком объектов,...

Класс-Контейнер Вектор - C++
Вставить новый элемент после всех элементов, кратных своему номеру

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2010, 19:07
Привет! Вот еще темы с ответами:

Класс-Контейнер Вектор - C++
Подскажите пожалуйста, как заполнить вектор латинским алфавитом?

Класс-Контейнер Вектор - C++
Как подсчитать в векторе количество максимальных элементов?

Класс-контейнер(абстракция текста) - C++
Необходимо создать класс-контейнер, который является абстракцией текста. Если я правильно понял, то мне необходимо создать класс...

Класс как стандартный контейнер - C++
Здорова господа! Опять есть условие задачи: Напишите такие классы, чтобы Vector из 16.2.1 и Vector из 16.2.2 могли использоваться как...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru