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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
васильич
Сообщений: n/a
#1

конструкторы-деструкторы строк - C++

21.11.2009, 12:53. Просмотров 1311. Ответов 0
Метки нет (Все метки)

Добрый день. имеется пример задачи, которую необходимо переделать под задание. задание следующее:
Общая постановка. Пользовательский класс String должен содержать необходимые элементы-данные, которые создаются в динамической области памяти.

Конструктор для создания строк: String (…);
Деструктор: ~String();
Метод ввода исходной строки: Set();
Метод печати: void print(…);
Код методов – вне пространства определения класса. Программа иллюстрирует прямой и косвенный способы обращения к методам.
Ввести с клавиатуры строку символов S1. Признак окончания ввода строки - нажатие клавиши "Ввод". Программа должна содержать перегруженную операцию «=», использование которой скопирует S1 в S2 .
Исходную и преобразованную строки вывести в файл.
Если длина L кратна 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
#include <iostream.h>
#define SIZE 255 //длина строки по умолчанию
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <istream.h>
 
class String{
char *str; 
char *str_return;
public:
String(); //конструктор по-умолчанию
String(char*); //конструктор, которому можно передавать параметр
~String(); //деструктор
char* Run(); //метод, выполняющий поставленную задачу. 
void Set(char*);
friend void print(String&); //функция-друг печати
friend ostream& operator<<(ostream&,String&); //перегрузка оператора вывода
friend istream& operator>>(istream&,String&); //перегрузка оператора ввода
friend char* Run(String&); //функция-друг, выполняющий поставленную задачу. 
};
 
String::String(){
str=new char[SIZE]; 
str[0]='\0';        
str_return=new char[SIZE];
str_return[0]='\0';
};
 
String::String(char *s){
str=new char[SIZE];
strcpy(str,s);
str_return=new char[SIZE];
str_return[0]='\0';
};
String::~String(){
delete[] str;
cout<<"...destructor has been called"<<endl;
};
 
void String::Set(char* s){
for (unsigned int i=0;i<strlen(s);i++) 
str[i]=s[i];
str[i]='\0';
};
 
char* String::Run(){ /*метод, решающий конкретную задачу, в данном случае - выделение из строки подстроки, не содержащей заглавных латинских букв, если длина исходной строки меньше 10*/
int j=0; 
if (strlen(str)<10) {
for (unsigned int i=0;i<strlen(str);i++)
if ( ((int)str[i]<65) || ((int)str[i]>90) ) {
str_return[j]=str[i]; j++;
};
str_return[j]='\0';
}
else strcpy(str_return,str);
 
return str_return;  
};
 
char* Run(String &obj){return obj.Run();};
 
void print(String &obj){cout<<obj.str<<" "<<obj.str_return<<endl;};
 
ostream& operator<<(ostream &stream,String &ob) {
stream << ob.str ; 
return stream;
};
 
istream &operator>>(istream &stream,String &ob){
stream >> ob.str;
return stream;
};
void main (void){
char s[265];
 
cout<<"Type anything and press \"Enter\":"<<endl;
cin.getline(s,256); //считываем полностью всю строку
String str(s); //доступ к методам класса непосредственно через переменную,
//начальное значение устанавливаем через конструктор
cout<<"You have type:"<<endl;
print(str);
cout<<"Output string:"<<endl;
cout<<Run(str)<<endl; 
cout<<"Type anything and press \"Enter\":"<<endl;
cin.getline(s,256);
String *pstr; //доступ к методам класса через указатель
pstr=new String();
pstr->Set(s);
cout<<"You have type:"<<endl;
print(*pstr);
cout<<"Output string:"<<endl;
cout<<Run(*pstr)<<endl;
delete pstr;
 
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2009, 12:53     конструкторы-деструкторы строк
Посмотрите здесь:

Конструкторы и деструкторы - C++
#include &lt;iostream&gt; #include &lt;Windows.h&gt; class Try { public: void* px; Try() { printf(&quot;Try\n&quot;); px=malloc(12); }; ...

Классы. Конструкторы. Деструкторы - C++
В Массиве рядок, который имеет минимальный елемент, отсортванть методом вставок с помощью классов. Текст программы я зделал трьома...

Наследуются ли конструкторы и деструкторы? - C++
При наследовании происходит ли наследование конструкторов и деструкторов базового класса?

Пустые конструкторы и деструкторы - C++
Скажите, есть-ли смысл прописывать пустые конструкторы и деструкторы? C_MainClass() {} ~C_MainClass() {}

Списки, конструкторы, деструкторы - C++
Извините, что я тут расфлудился темами... Это последняя в этом месяце, честно. Суть проблемы в том, что я вот работал с QList из Qt и...

Конструкторы и деструкторы функционального объекта - C++
Привет всем. Вообщем разбирал задачу, в которой рассматривается алгоритм for_each, я решил добавить отладочный вывод в конструктор и...

Конструкторы и Деструкторы в С++. Не могу разобраться( - C++
Помогите пожалуйста разобраться с конструкторами и деструкторами в с++. Не пойму , как ними пользоваться . Вот , например у меня есть код :...

Конструкторы, Деструкторы. вывод на экран - C++
Здравствуйте уважаемые форумчане! Из книги взял пример кода по конструкторам. Вот код: #include &lt;cstdlib&gt; #include &lt;iostream&gt; ...

Конструкторы/Деструкторы. Дружественные функции - C++
Здраствуйте! Учусь на 1 курсе физфака МГУ им. Ломоносова. Начали изучать С++. Вот есть задача, точнее д.з. Можете мне помочь, пожалуйста....

Ошибка в нескольких строчках. Конструкторы и деструкторы - C++
Какие ошибки в фрагменте кода? Что нужно вычеркнуть? class X { int i; double t; x() { i=0; t=1.0; cout&lt;&lt;1; } public:

Классы. Протокол класса. Конструкторы и деструкторы - C++
Создать класс «матрица». Данный класс должен содержать элементы типа int, определяющие число строк, столбцов и состояние ошибки. Определить...

Конструкторы/деструкторы. Помогите прокомментировать код - C++
massiv massiv::sum(massiv mas1){ int f=0,j,h=0; massiv mas3(mas1.n+this-&gt;n); // for(int i=0;i&lt;mas1.n;i++) mas3.mas=mas1.mas;...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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