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

Пример из книги- ну, напутан - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Двумерный массив в одномерный http://www.cyberforum.ru/cpp-beginners/thread954604.html
Здравствуцте, Есть двумерный массив с отсортированными строками. нужно его преобразовать в одномерный отсортированный. Алгоритм предлагаю следующий: (для массива 3*3) перебираем 9 раз массив ...
C++ Список процессов с иконками Каким образом можно отабразить собственные иконки приложений в списке процессов? Процессы перечисляю так: HANDLE hProcessSnap; PROCESSENTRY32 pros32; int i=0; hProcessSnap =... http://www.cyberforum.ru/cpp-beginners/thread954595.html
C++ Что означают знаки подчеркивания впереди идентификатора?
В исходнике при описании типа через typedef имя типа начинается с 2-х знаков подчеркивания. Дальше в программе это имя присутствует без подчеркиваний. Объясните, какую функцию выполняют эти знаки?
Беда с подключением библиотеки C++
Доброго времени суток. Суть проблемы в том, что один и тот же код работает по разному в зависимости от того находится ли он в библиотеки или нет... Вот класс: class Bitmap { private: ...
C++ Как просмотреть цикл не последовательно в debugger'e? http://www.cyberforum.ru/cpp-beginners/thread954569.html
Вот, например, есть цикл int a; a = 0; int n = 10000; for (int i = 1; i < n; i++) a = a+1; Возможно ли, и если да, то как в debugger'e посмотреть значения переменных, которые изменяются...
C++ Программа поиска и удаления кавычек в текстовом файле Всем привет! Вот озадачился написанием программы для поиска и удаления двойных кавычек из текстовых файлов. К примеру, есть папка, в ней может быть несколько текстовых файлов. Нужно по очереди... подробнее

Показать сообщение отдельно
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091

Пример из книги- ну, напутан - C++

14.09.2013, 23:22. Просмотров 566. Ответов 18
Метки (Все метки)

Представляте, вчира три часа смотрел на страницу книги- разбирал его, пытался понять... Поначалу ве показалась мне совсем простым.. Дальше я попытался что-л понять , прослидить судьбу переменных. Задача аказалась грамоздкая и напутаная. Короче, через три часа я вобще перестал понимать что-л!!!!
Сегодня скопировал в блокнот и комментиру. Ужас!
И еще 3, 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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
Листинг 6.8. Объявление классов точки и прямоугольника
 
1: // Начало файла Rect.hpp
 
2: #include <iostream.h>
 
3: class Point // хранит координаты x,y
 
4: {
 
5:    // нет конструктора, используется конструктор по умолчанию
 
6: public:
 
7:    void SetX(int x) { itsX = x; >   // 
 
8:    void SetY(int у) { itsY = у; }  // 
 
9:    int GetX() const < return itsX;}
 
10:   int GetY() const { return itsY;}
 
11: private:
 
12:   int itsX;
 
13:   int itsY;
 
14: }; // конец объявления класса Point
 
15:
 
16:
 
17: class Rectangle
 
18: {
 
19: public:
 
20:   Rectangle(int top, int left, int bottom, int right):.; //  Это видно конструктор. Что за точки в его конце?
 
21:   ~Rectangle() {}
 
22:
 
23:   int GetTop() const { return itsTop; }  // Где в программе дальше используется функция GetTop ???
 
24:   int GetLeft() const { return itsLeft; } // Где в программе дальше используется функция GetLeft ???
 
25:   int GetBottom() const { return itsBottom; } // Где в программе дальше используется функция GetBottom ???
 
26:   int GetRight() const { return itsRight; }  // Где в программе дальше используется функция GetRight ???
 
27:
 
28:   Point GetUpperLeft() const { return itsUpperLeft; }   //  Почему мы пишем Point вместо int или воид?
 
29:   Point GetLowerLeft() const { return itsLowerLeft; }    //  Почему мы пишем Point вместо int или воид? Где, где вобще как-л ипользуется эта функция?
 
30:   Point GetUpperRight() const { return itsUpperRight; }  //  Почему мы пишем Point вместо int или воид?  Где, где вобще как-л ипользуется эта функция?
 
31:   Point GetLowerRight() const { return itsLowerRight; }  //  Почему мы пишем Point вместо int или воид? Где, где вобще как-л ипользуется эта функция?
 
32: 
 
33:   void SetUpperLeft(Point Location) {itsUpperLeft = Location; }  //Почему этим разным переменным мы присваиваем значение Location?
                                                                        //Где, где вобще как-л ипользуется эта функция?
34:   void SetLowerLeft(Point Location) {itsLowerLeft = Location; }   //Почему этим разным переменным мы присваиваем значение Location?
                                                                        //Где, где вобще как-л ипользуется эта функция?
35:   void SetUpperRight(Point Location) {itsUpperRight = Location; }  //Почему этим разным переменным мы присваиваем значение Location?
                                                                       //Где, где вобще как-л ипользуется эта функция?    
36:   void SetLowerRight(Point Location) {itsLowerRight = Location; }  //Почему этим разным переменным мы присваиваем значение Location?
                                                                       //Где, где вобще как-л ипользуется эта функция?
37:
 
38:   void SetTop(int top) { itsTop = top; }    // А не используется!!  
 
39:   void SetLeft (int left) { itsLeft = left; }  // А не используется!! 
 
40:   void SetBottorn (int bottom) { itsBottom = bottom; }  // А не используется!! 
 
41:   void SetRight (int right) { itsRight = right; }     // А не используется!! 
 
42:
 
43:   int GetArea() const;
 
44:
 
45: private:
 
46:   Point itsUpperLeft;  // Что за Point?? Очевидно, что itsUpperLeft переменная? Или таки обьект??
 
47:   Point itsUpperRight;  // Что за Point?? Очевидно, что itsUpperRight переменная? Или таки обьект??
 
48:   Point itsLowerLeft;  // Что за Point?? Очевидно, что itsLowerLeft переменная? Или таки обьект??
 
49:   Point itsLowerRight; // Что за Point?? Очевидно, что itsLowerRight переменная? Или таки обьект??
 
50:   int itsTop;
 
51:   int itsLeft;
 
52:   int itsBottom;
 
53:   int itsRight;
 
54: };
 
55: // конец файла Rect.hpp
 
 
 
Листинг 6.9. Содержимое файла RECT.cpp
 
1: // Начало файла rect.cpp
 
2: #include "rect.hpp"
 
3: Rectangle::Rectangle(int top, int left, int bottom, int right)  // Конструктор Rectangle
 
4: {
 
5:    itsTop = top; //Здесь используется присвоение внутри конструктора, а у нас собствено есть функция 
                     //void SetTop(int top) { itsTop = top; } Почему так и так? Это смысл или нидочет?
6:    itsLeft = left;//Также сдесь
 
7:    itsBottom = bottom;//Также сдесь
 
8:    itsRight = right;//Также сдесь
 
9:
 
10:   itsUpperLeft.SetX(left);//  Переменной itsX присваиваем left(левый), при этом также ее присваиваем itsLeft, при 
                              // этом left обьявлена и видна в конструкторе,x обьявлена и видна в публичной функции, 
                              // itsX обьявлена и видна в приватной части класса Point и собствено больше не используется!
                              
11:   itsUpperLeft.SetY(top);//Переменной itsY присваиваем top (верхний), при этом также ее присваиваем itsTop, при 
                              // этом top обьявлена и видна в конструкторе,у обьявлена и видна в публичной функции, 
                              // itsY обьявлена и видна в приватной части класса Point и собствено больше не используется! 
12:
 
13:   itsUpperRight.SetX(right);//За каким-то чёртом создаем еще обьект itsUpperRight и переменной itsX присваиваем right (правый), 
                              // при этом также ее присваиваем itsRight, при 
                              // этом right обьявлена и видна в конструкторе,x обьявлена и видна в публичной функции, 
                              // itsX обьявлена и видна в приватной части класса Point и собствено больше не используется!
 
14:   itsUpperRight.SetY(top);//За каким-то чёртом создаем еще обьект itsUpperRight и переменной itsY присваиваем top (верхний), 
                              // при этом также ее присваиваем itsTop, при 
                              // этом top обьявлена и видна в конструкторе,у обьявлена и видна в публичной функции, 
                              // itsY обьявлена и видна в приватной части класса Point и собствено больше не используется! 
 
15:
 
16:   itsLowerLeft.SetX(left);//Повторяем строку 10 с обьектом itsLowerLeft!!!!
 
17:   itsLowerLeft.SetY(bottom);//С этим же обьектом itsLowerLeft itsY присваиваем bottom (нижний), при этом также ее присваиваем itsBottom, при 
                              // этом bottom обьявлена и видна в конструкторе,у обьявлена и видна в публичной функции, 
                              // itsY обьявлена и видна в приватной части класса Point и собствено больше не используется! !!!!
 
18:
 
19:   itsLowerRight.SetX(right);//За каким-то чёртом создаем еще обьект itsLowerRight и переменной itsX присваиваем right (правый), 
                              // при этом также ее присваиваем itsRight, при 
                              // этом right обьявлена и видна в конструкторе,x обьявлена и видна в публичной функции, 
                              // itsX обьявлена и видна в приватной части класса Point и собствено больше не используется!
 
20:   itsLowerRight.SetY(bottom);//За каким-то чёртом создаем еще обьект itsLowerRight и переменной itsY присваиваем bottom (нижний), при этом также ее присваиваем itsBottom, при 
                              // этом bottom обьявлена и видна в конструкторе,у обьявлена и видна в публичной функции, 
                              // itsY обьявлена и видна в приватной части класса Point и собствено больше не используется! !!!!
 
21: }
 
22:  // А вобще разве не правамерно использовать обьект и точку в маин, а не в конструкторе? Это можно так и правильно?
 
23: //Короче жуткая ересь!! Автор был сильно пьян!!
 
24: // Вычисляем площадь прямоугольника, отыскивая его стороны
 
25: // определяем его длину и ширину, а затем перемножаем их
 
26: int Rectangle::GetArea() const
 
27: {
 
28:   int Width = itsRignt - itsLeft;//Правый минус левый
 
29:   int Height = itsTop - itsBottom; //Верхний минус нижний
 
30:   return (Width >> Height);  //А где а затем перемножаем их??  Десять минут искал гд-л значок множиния!!А, я таки должен 
                                 // сам его проставить...
 
31: }
 
32:
 
33: int main()
 
34: {
 
35:   //инициализируем локальную переменную Rectangle
 
36:   Rectangle MyRectangle (100, 20, 50, 80 );
 
37:
 
38:   int Area = MyRectangle.GetArea();
 
39:
 
40:   cout  << "Area: " << Area  << "\n";
 
41:   cout  << "Upper Left X Coordinate:";
 
42:   cout  << MyRectangle.GetUpperLeft().GetX();
 
43:   return 0;
 
44: }
 
/*  Мы передаем четыре координаты ага для двух точек в обьект MyRectangle. Да нет, это четыре отдельные точки!!
Но как же? Ведь каждая точка мает две координаты???!! Четыре, пусть три точки должны быть - и восемь ( ну шесть) координат!!
 
Цитата автора Конструктор класса Rectangle принимает четыре целочисленных параметра, именуемых top (верхний), left (левый), bottom (нижний) и right (правый). Эти четыре параметра, передаваемые конструктору, 
копируются в соответствующие четыре пере- менные-члена (см. листинг 6.9), после чего устанавливаются четыре точки (четыре объекта класса Point).
 
*/
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru