лабы вариант 4 / Классы2.1
.docxМИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение высшего образования
Национальный исследовательский университет «МЭИ»
|
Институт ИнЭИ
Кафедра БИТ |
ПРАКТИЧЕСКАЯ РАБОТА №2
Задание №1
по дисциплине
«Объектно-ориентированный анализ и программирование»
Тема
« Классы »
|
Студент
|
Газизова Юлия Маратовна _______________________ |
|
Группа
|
ИЭс-161-19 _______________________ |
|
Лектор
|
Овсянникова М.Р. _______________________ |
|
Руководитель
|
_______________________ |
|
|
|
Работа защищена |
_______________________ оценка |
_______________________ дата |
Москва |
2020 |
1. Условие задачи
Разработать программу с использованием класса объектов.
Для класса объектов разработать подпрограммы (методы класса) для:
- создания объекта с заданными значениями,
- показать характеристики объекта класса,
- вычисление объема правильной четырехугольной призмы,
- вычисление площади правильной четырехугольной призмы
В программе:
- создать один объект класса и показать его характеристики;
- создать два объекта класса;
- сравнить вычисленные значения для двух объектов класса, по результатам каждого из сравнений вывести соответствующие сообщения.
Исходя из условий поставленной лабораторной работы, вычисляем площадь и периметр для класса объекта –кольцо.
2. Состав данных
В таблице 1 показаны данные используемые в программе.
Таблица 1
Название |
Тип данных |
Значение |
R |
double |
Внешний радиус кольца для первого объекта |
r |
double |
Внутренний радиус кольца для первого объекта |
R1 |
double |
Внешний радиус кольца для второго объекта |
r1 |
double |
Внутренний радиус кольца для второго объекта |
S |
double |
Переменная площади |
P |
double |
Переменная периметра |
3. Набор тестовых данных. Ожидаемые результаты
Внешний радиус кольца для первого объекта :1
Внутренний радиус кольца для первого объекта :2
Внешний радиус кольца для второго объекта :2
Внутренний радиус кольца для второго объекта :4
Ожидаемые результаты :
Для первого объекта:
S=π⋅(R^2−r^2)=9,42
P=2⋅π⋅(R+r)=18,84
Для второго объекта:
S=π⋅(R^2−r^2)=-37,68
P=2⋅π⋅(R1+r1)=37,68
4. Метод решения задачи, основные формулы
Формула для вычисления площади кольца:
S=π⋅(R^2−r^2)
Формула для вычисления периметра кольца:
P=2⋅π⋅(R+r)
5. Текст программы
#include <iostream>
#include <cmath>
using namespace std;
class ring // Имя класса
{
public: // Спецификатор доступа
double S; // Переменная площади
double P; // Переменная периметра
double s(double R, double r) // Метод класса - расчитывает площадь через радиусы
{
S = 3.14 * (pow(R,2) - pow(r,2));
return S;
}
double p(double R, double r) // Метод класса - расчитывает периметр
{
P = 2 * 3.14 * (R + r);
return P;
}
void output_s(int b) // Метод класса - выводит посчитанную площадь
{
cout << "Area of a circle: " << S << endl;
}
void output_p(int b) // мМетод класса - выводит посчитанный периметр
{
cout << "Circle perimeter: " << P << endl;
}
};
int main()
{
double R = 1; // Внешний радиус кольца для первого объекта
double r = 2; // Внутренний радиус кольца для первого объекта
double R1 = 2; // Внешний радиус кольца для второго объекта
double r1 = 4; // Внутренний радиус кольца для второго объекта
// Блок для объекта 1
ring object; // Объявление объекта A
object.s(R,r); // Вызов функции класса s (тут у нас считается площадь)
object.p(R,r); // Вызов функции класса p (тут у нас считается периметр)
cout << "Object 1" << endl;
object.output_s(object.s(R,r)); // Вызов метода класса output_s - вывод посчитанной площади на экран)
object.output_p(object.p(R,r)); // Вызов метода класса output_p - вывод посчитанного периметра на экран)
cout << "\n";
// Блок для объекта 2
ring object2;
object2.s(R1,r1); // Вызов функции класса s (тут у нас считается площадь)
object2.p(R1,r1); // Вызов функции класса p (тут у нас считается периметр)
cout << "Object 2" << endl;
object2.output_s(object2.s(R1,r1)); // Вызов функции класса output_s (выводит посчитанную площадь на экран) ДЛЯ ОБЪЕКТА Б
object2.output_p(object2.p(R1,r1)); // Вызов функции класса output_p (выводит посчитанный периметр на экран) ДЛЯ ОБЪЕКТА Б
cout << "\n";
cout << "--------------------Result--------------------" << endl;
// Блок сравнения вычисленных значений
if (object.s(R,r) == object2.s(R1,r1))
{
cout << "Areas of objects are equal" << endl;
}
else if (object.s(R,r) > object2.s(R1,r1))
{
cout << "Object area 1 > Object area 2 " << endl;
}
else
{
cout << "Object area 1 < Object area 2 " << endl;
}
if (object.p(R,r) == object2.p(R1,r1))
{
cout << "Perimeters of objects are equal" << endl;
}
else if (object.p(R,r) > object2.p(R1,r1))
{
cout << "Object perimeter 1 > Object perimeter 2 " << endl;
}
else
{
cout << "Object perimeter 1 < Object perimeter 2 " << endl;
}
system("pause");
return 0;
}
6. Результаты выполнения программы на наборе тестовых данных
Результаты работы программы при тестовых данных показаны на рисунке 1.
Рисунок 1 - Результаты работы программы