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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создать таблицу с записями о сотрудниках отдела http://www.cyberforum.ru/cpp-beginners/thread111141.html
Help>> Написать и отладить программу решения задачи, сформулированной в варианте. В программе предусмотреть контрольный вывод вводимых данных и результатов в соответствии с поставленной задачей....
C++ Среднее арифметическое наибольшего и наименьшего значений матрицы дана действительная матрица размером n*m найти среднее арифметическое ее наибольшего и наименьшего значений http://www.cyberforum.ru/cpp-beginners/thread111140.html
Определить функции: сумма цифр числа, вращение числа (цифры - в обратном порядке), деление чисел (результат - действительное число) C++
Определить класс: целое число. Определить функции: сумма цифр числа, вращение числа (цифры - в обратном порядке), деление чисел (результат - действительное число).
C++ Создать таблицу с записями о принтерах
Написать и отладить программу решения задачи, сформулированной в варианте. В программе предусмотреть контрольный вывод вводимых данных и результатов в соответствии с поставленной задачей. Вариант:...
C++ Есть такие? http://www.cyberforum.ru/cpp-beginners/thread111114.html
Нужны люди которые будут помогать 6 апреля с 12:00 до 15:30 безвозмездно мне на олимпиаде по информатике. Если есть желающие пишите в личку. Буду признателен.
C++ двумерная матрица В матрице A=(a (i,j=1,2,...,n) каждый элемент равен 1,2,3 или 4. Подсчитайте количество четверок a,a,a,a, в каждой из которых все элементы различны; n=6 есть код на паскале, но я не могу перевести... подробнее

Показать сообщение отдельно
ArniLand
4 / 4 / 0
Регистрация: 07.09.2009
Сообщений: 190

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

31.03.2010, 19:07. Просмотров 634. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru