Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лабы вариант 4 / Классы2.3

.docx
Скачиваний:
6
Добавлен:
15.12.2020
Размер:
75.92 Кб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное бюджетное образовательное учреждение высшего образования

Национальный исследовательский университет «МЭИ»

Институт ИнЭИ

Кафедра БИТ

ПРАКТИЧЕСКАЯ РАБОТА №2

Задание №3

по дисциплине

«Объектно-ориентированный анализ и программирование»

Тема

« Классы »

Студент

Газизова Юлия Маратовна

_______________________

Группа

ИЭс-161-19

_______________________

Лектор

Овсянникова М.Р.

_______________________

Руководитель

_______________________

Работа защищена

_______________________

оценка

_______________________

дата

Москва

2020

1. Условие задачи

1. Описать новый класс объектов на основе существующего класса. Добавить новую характеристику для нового класса – цвет фигуры.

2. Создать массив объектов нового класса. Вывести все объекты класса в табличном виде (полный набор характеристик).

3. Вывести все объекты класса в табличном виде. В таблице показать подмножество всех характеристик класса объектов.

4. Вывести данные (в табличном виде с соответствующим заголовком) обо всех фигурах желтого цвета. Предусмотреть реакцию программы на ситуацию, когда объекты с указанными свойствами в таблице отсутствуют.

5. Решить задачу п.4 с использованием модуля.

Исходя из условий поставленной лабораторной работы, вычисляем площадь и периметр для класса объекта –кольцо.

2. Состав данных

В таблице 1 показаны данные используемые в программе.

Таблица 1

Название

Тип данных

Значение

S

double

Переменная для расчета площади

P

double

Переменная для расчета площади

R

double

Внешний радиус кольца для объекта

r

double

Внутренний радиус кольца для объекта

c_array

string

Массив, содержащий в себе цвета:

Оранжевый

Зеленый

Желтый

array

double

Записываем внешний радиус кольца

array1

double

Записываем внутренний радиус кольца

array2

double

Записываем расчет площади

array3

double

Записываем расчет периметра

rw

static const unsigned int

Статическая переменная для массивов: с_array,array,array1,array2,array3

3. Набор тестовых данных. Ожидаемые результаты

Внешний радиус кольца : R=1 

Внутренний радиус кольца: r=2 

Тестовые значения №1:

Внешний радиус=1

Внутренний радиус=2

Площадь=-9,42

Периметр=18,84

Цвет= Оранжевый

Тестовые значения №2:

Внешний радиус=2

Внутренний радиус=3

Площадь= -15,7

Периметр= 31,4

Цвет= Зеленый

Тестовые значения №3:

Внешний радиус=3

Внутренний радиус= 4

Площадь= -21,98

Периметр= 43,96

Цвет= Желтый

Ожидаемые результаты:

Внешний радиус=3

Внутренний радиус= 4

Площадь= -21,98

Периметр= 43,96

Цвет= Желтый

4. Метод решения задачи, основные формулы

Формула для вычисления площади кольца:

S=π(R^2r^)

Формула для вычисления периметра кольца:

P=2π(R+r)

5. Текст программы

#include <iostream>

#include <fstream>

#include <iomanip>

#include <string>

using namespace std;

class ring // имя класса

{

static const unsigned int rw = 3; // Const переменная для массивов

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 table(double array[rw], double array1[rw], double array2[rw], double array3[rw], string c_array[rw]) // Метод класса - сохраняет результат в файл и выводит на консоль результат

{

double R = 1; // Внешний радиус кольца

double r = 2; // Внутренний радиус кольца

// Составление таблицы и запись её в файл

for (int i = 0; i < rw; i++)

{

ofstream file("test.txt", ios::app);

array[i] = i + R; // // Внешний радиус кольца

file << endl << array[i] << "\t"; // Запись в файл внешнего ридиуса кольца

array1[i] = i + r; // Внутренний радиус кольца

file << array1[i] << "\t"; // Запись в файл внутр. ридиуса кольца

array2[i] = s(i + R, i + r); // Расчёт площади

file << array2[i] << "\t"; // Запись в файл результата

array3[i] = p(i + R, i + r); // Расчёт периметра

file << array3[i] << "\t"; // Запись в файл результата

cout << setw(8) << array[i] << setw(15) << array1[i] << setw(18) << array2[i] << setw(15) << array3[i] << setw(20) << c_array[i] << endl; // Вывод таблицы

file.close(); // Закрытие файла

}

}

void color(double array[rw], double array1[rw], double array2[rw], double array3[rw], string c_array[rw]) // Метод класса выделяющий строку с желтым цветом объекта

{

if (c_array[0] == "Yellow")

{

cout << "\n" << "Result:" << endl;

cout << "Outer radius " << "Inner radius " << setw(12) << "Area " << setw(16) << "Perimeter" << setw(20) << "Color" << endl;

cout << setw(8) << array[0] << setw(15) << array1[0] << setw(18) << array2[0] << setw(15) << array3[0] << setw(20) << c_array[0] << endl; // Вывод строки из таблицы с цветом

}

else if (c_array[1] == "Yellow")

{

cout << "\n" << "Result:" << endl;

cout << "Outer radius " << "Inner radius " << setw(12) << "Area " << setw(16) << "Perimeter" << setw(20) << "Color" << endl;

cout << setw(8) << array[1] << setw(15) << array1[1] << setw(18) << array2[1] << setw(15) << array3[1] << setw(20) << c_array[1] << endl; // Вывод строки из таблицы с цветом

}

else if (c_array[2] == "Yellow")

{

cout << "\n" << "Result:" << endl;

cout << "Outer radius " << "Inner radius " << setw(12) << "Area " << setw(16) << "Perimeter" << setw(20) << "Color" << endl;;

cout << setw(8) << array[2] << setw(15) << array1[2] << setw(18) << array2[2] << setw(15) << array3[2] << setw(20) << c_array[2] << endl; // Вывод строки из таблицы с цветом

}

else

{

cout << "Not found " << endl;

}

}

};

int main()

{

static const unsigned int rw = 3; // Статическая переменная для массива

// Объявление статических массивов

double array[rw];

double array1[rw];

double array2[rw];

double array3[rw];

string c_array[rw] = { "Orange", "Green", "Yellow" }; // Стринговый массив

int R = 1; // Внешний радиус кольца для первого объекта

int r = 2; // Внутренний радиус кольца для первого объекта

ring object; // объявление объекта кольца

cout << "\n" << "Table:" << endl;

cout << "Outer radius " << "Inner radius " << setw(12) << "Area " << setw(16) << "Perimeter" << setw(20) << "Color" << endl;

object.table(array, array1, array2, array3, c_array); //Вызов метода класса output - сохраняет результат в файл и выводит на консоль результат

cout << endl;

object.color(array, array1, array2, array3, c_array); //вызов метода класса input - пересчитывающая параметры в случае их изменений

cout << endl;

system("pause");

return 0;

}

6. Результаты выполнения программы на наборе тестовых данных

Результаты работы программы при тестовых данных показаны на рисунке 1.

Рисунок 1 - Результаты работы программы

Соседние файлы в папке лабы вариант 4