Чтение онлайн

ЖАНРЫ

Освой самостоятельно С++ за 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: //

Инициализация объекта rectangle значением 30,5

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. Суть программы состоит в построении виртуального прямоугольника с выводом меню, предлагающего выбор из пяти опций: вывод прямоугольника на экран, определение его площади, определение периметра, изменение размера прямоугольника и выход из программы.

Поделиться с друзьями: