Освой самостоятельно С++ за 21 день.
Шрифт:
26: };
27:
28: // Выполнение методов класса
29: void Rectangle::SetSize(int newWidth, int newHeight)
30: {
31: itsWidth = newWidth;
32: itsHeight = newHeight;
33: }
34:
35:
36: Rectangle::Rectangle(lnt width, int height)
37: {
38: itsWidth = width;
39: itsHeight = height;
40: }
41:
42: Rectangle::~Rectangle { }
43:
44: int DoMenu;
45: void DoDrawRect(Rectangle);
46: void DoGetArea(Rectangle);
47: void DoGetPerim(Rectangle);
48:
49: int main
50: {
51: //
52: Rectangle theRect(30,5);
53:
54: int choice = DrawRect;
55: int fQuit = false;
56:
57: while (!fQuit)
58: {
59: choice = DoMenu;
60: if (choice < DrawRect || choice > Quit)
61: {
62: cout << "\nInvalid Choice, please try again.\n\n"
63: continue;
64: }
65: switch (choice)
66: {
67: case DrawRect:
68: DoDrawRect(theRect);
69: break;
70: case GetArea:
71: DoGetArea(theRect);
72: break;
73: case GetPerim:
74: DoGetPerim(theRect);
75: break;
76: case ChangeDimensions:
77: int newLength, newWidth;
78: cout << "\nNew width: ";
79: cin >> newWidth;
80: cout << "New height: ";
81: cin >> newLength;
82: theRect.SetSize(newWidth, newLength);
83: DoDrawRect(theRect);
84: break;
85: case Quit:
86: fQuit = true;
87: cout << "\nExiting...\n\n";
88: break;
89: default:
90: cout << "Error in choioe!\n";
91: fQuit = true;
92: break;
93: } // end switch
94: } // end while
95: return 0;
96: } // end main
97:
98: int DoMenu
99: {
100: int choice;
101: cout << "\n\n *** Menu *** \n";
102: cout << "(1) Draw Rectangle\n";
103: cout << "(2) Area\n";
104: cout << "(3) Perimeter\n";
105: cout << "(4) Resize\n";
106: cout << "(5) Quit\n";
107:
108: cin >> choice;
109: return choice;
110: }
111:
112: void DoDrawRect(Rectangle theRect)
113: {
114: int height = theRect.GetHeight;
115: int width = theRect.GetWidth;
116:
117: for (int i = 0; i<height; i++)
118: {
119: for (int j = 0; j< width; j++)
120: cout << "*";
121: cout << "\n";
122: }
123: }
124:
125:
126: void DoGetArea(Rectangle theRect)
127: {
128: cout << "Area: " << theRect.GetArea << endl;
129: }
130:
131: void DoGetPerim(Rectangle theRect)
132: {
133: cout << "Perimeter: " << theRect.GetPerim << endl;
134: }
Результат:
*** Menu***
(1) Draw Rectangle
(2) Area
(3) Perimeter
(4) Resize
(5) Quit
1
******************************
******************************
******************************
******************************
******************************
*** Menu***
(1) Draw Rectangle
(2) Area
(3) Perimeter
(4) Resize
(5) Quit
2
Area: 150
*** Menu***
(1) Draw Rectangle
(2) Area
(3) Perimeter
(4) Resize
(5) Quit
3
Perimeter: 70
*** Menu***
(1) Draw Rectangle
(2) Area
(3) Perimeter
(4) Resize
(5) Quit
4
New Width: 10
New height: 8
**********
**********
**********
**********
**********
**********
**********
**********
*** Menu***
(1) Draw Rectangle
(2) Area
(3) Perimeter
(4) Resize
(5) Quit
2
Area: 80
>>** Menu***
(1) Draw Rectangle
(2) Area
(3) Perimeter
(4) Resize
(5) Quit
3
Perimeter: 36
*** Menu***
(1) Draw Rectangle
(2) Area
(3) Perimeter
(4) Resize
(5) Quit
5
Exiting. . .
Анализ:
В данной программе сведено большинство тех средств и подходов программирования, с которыми вы познакомились в течение первой недели. Вы должны не только уметь ввести программный код, скомпилировать, скомпоновать и запустить эту программу, но также и понимать, что и как в ней работает. Если все это вам удалось, значит, неделя прошла не зря.В первых шести строках делаются объявления новых типов данных и важные определения, которые затем будут использоваться на протяжении всей программы.
В строках 6—26 объявляется класс Rectangle. Он содержит открытые методы доступа для возвращения и установки ширины и высоты прямоугольника, а также для вычисления его площади и периметра. Строки 29-40 содержат определения тех функций-членов класса, которые не объявлялись с ключевым словом inline.
Прототипы обычных функций, не являющихся членами класса, находятся в строках 44—47, а основной блок программы начинается со строки 49. Суть программы состоит в построении виртуального прямоугольника с выводом меню, предлагающего выбор из пяти опций: вывод прямоугольника на экран, определение его площади, определение периметра, изменение размера прямоугольника и выход из программы.