Файл: Высокоуровневые методы программирования.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 08.11.2023

Просмотров: 21

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Министерство науки и высшего образования РФ Федеральное государственное бюджетное образовательное учреждение высшего образования «Воронежский государственный технический университет»
Кафедра кибернетики в системах организационного управления

ВЫСОКОУРОВНЕВЫЕ МЕТОДЫ ПРОГРАММИРОВАНИЯ

Методические указания и задания к выполнению курсовой работы для направления подготовки 09.03.03 «ПРИКЛАДНАЯ ИНФОРМАТИКА»

Воронеж 2022

Задание


Декартовы координаты в пространстве (x, y, z)-координаты. Дополнительно: сортировка по компонентам и целиком, пересчёт в цилиндрическую систему координат.

Описание:


Декартовы координаты - система координат, состоящая из двух перпендикулярных осей. Положение точки в такой системе формируется с помощью двух чисел, определяющих расстояние от центра координат по каждой из осей. Здесь мы будем рассматривать трехмерный случай. Введем, для начала, следующие данные.

Упорядоченная система двух или трёх пересекающихся перпендикулярных друг другу осей с общим началом отсчёта (началом координат) и общей единицей длины называется прямоугольной декартовой системой координат.

Прямоугольная декартова система координат на плоскости имеет две оси, а прямоугольная декартова система координат в пространстве - три оси. Каждая точка на плоскости или в пространстве определяется упорядоченным набором координат - чисел в соответствии единице длины системы координат.

Заметим, что, как следует из определения, существует декартова система координат и на прямой, то есть в одном измерении. Введение декартовых координат на прямой представляет собой один из способов, с помощью которого любой точке прямой ставится в соответствие вполне определённое вещественное число, то есть координата.




Рисунок 1. Параллелепипед в декартовой системе координат

Классы в С++ — это абстракция описывающая методы, свойства, ещё не существующих объектов. Объекты — конкретное представление абстракции, имеющее свои свойства и методы. Созданные объекты на основе одного класса называются экземплярами этого класса. Эти объекты могут иметь различное поведение, свойства, но все равно будут являться объектами одного класса. В ООП существует три основных принципа построения классов:

  1. Инкапсуляция — это свойство, позволяющее объединить в классе и данные, и методы, работающие с ними и скрыть детали реализации от пользователя.

  2. Наследование — это свойство, позволяющее создать новый класс-потомок на основе уже существующего, при этом все характеристики класса родителя присваиваются классу-потомку.

  3. Полиморфизм — свойство классов, позволяющее использовать объекты классов с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.

Каждое свойство построения классов мы рассмотрим подробно по мере необходимости, а пока просто запомните эти три. А теперь вернёмся к классам, для начала рассмотрим структуру объявления классов.



Рисунок 2. Понятие класса в C++

Каждый объект имеет какие-то свои свойства или атрибуты, которые характеризуют его на протяжении всей жизни. Атрибуты объекта хранятся в переменных, объявленных внутри класса, которому принадлежит данный объект. Причём, объявление переменных должно выполняться со спецификатором доступа private.

Такие переменные называются элементами данных. Так как элементы данных объявлены в private, то и доступ к ним могут получить только методы класса, внешний доступ к элементам данных запрещён. Поэтому принято объявлять в классах специальные методы — так называемые set и get функции, с помощью которых можно манипулировать элементами данных. set-функции инициализируют элементы данных, 

get-функции позволяют просмотреть значения элементов данных. Доработаем класс  CppStudioтак, чтобы в нём можно было хранить дату в формате дд.мм.гг. Для изменения и просмотра даты реализуем соответственно set и get функции.

Листинг программы:


#include

 

using namespace std;

 

class parallelepiped

{private:

    int ab, ac, aa1;

    int a[3];public:

    parallelepiped(int arr[3], int raz1, int raz2, int raz3)

    {

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

            a[i] = arr[i];

        ab = raz1;

        ac = raz2;

        aa1 = raz3;

    };//  parallelepiped() {};

 

    void enter()

    {

        cout << "Введите координаты точки A: " << endl;

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

            cin >> a[i];

        cout << "Введите длину сторон: " << endl << "AB=";

        cin >> ab;

        cout << "AC=";

        cin >> ac;

        cout << "AA1=";

        cin >> aa1;

    }

 

    void move(int arr[3])

    {

        cout << "Новые координаты: ";

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

        {

            a[i] = a[i] + arr[i];

            cout << a[i] << " ";

        }

        cout << endl;

    }

 

    void modification(int pr)

    {

        if (pr >= 0)

        {

            ab = ab*pr;

            ac = ac*pr;

            aa1 = aa1*pr;

        }

        else

        {

            ab = ab / pr;

            ac = ac / pr;

            aa1 = aa1 / pr;

        }

        cout << "AB=" << ab << endl << "AC=" << ac << endl << "AA1=" << aa1 << endl;

    }

 

    void min(int a, int b, int c)

    {

        int a0, b0, c0;

        if (ab < a)

            a0 = ab;

        else

            a0 = a;

 

        if (ac < b)

            b0 = ac;

        else

            b0 = b;

 

        if (ac < c)

            c0 = ac;

        else

            c0 = c;

 

        cout << "Стороны наименьшего параллелепипеда: Длина =" << a0 << "; Ширина =" << b0 << "; Высота =" << c0 << endl;

    }};

 

    void menu(int* a, int ab, int ac, int aa1)

    {

        parallelepiped abcd(a, ab, ac, aa1);

        int x;

        do

        {

            cout << "Какую операцию вы хотите выполнить?" << endl;

            cout << "1.Переместить параллелепипед в пространстве." << endl;

            cout << "2.Изменить размеры параллелепипеда." << endl;

            cout << "3.Нахождение наименьшего параллелепипеда на пересечении уже существующих." << endl;

            cout << "0.Прервать работу." << endl;

            cin >> x;

            switch (x)

            {

            case 1:

            {

                cout << "Введите координаты вектора: " << endl;

                int arr[3];

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

                    cin >> arr[i];

 

                abcd.move(arr);

                break;

            };

            case 2:

            {

                int proizv;

                cout << "Во сколько раз увеличить или уменьшить стороны прямоугольника?" << endl;

                cin >> proizv;

                abcd.modification(proizv);

                break;

            };

            case 3:

            {

                int a1, b1, c1;

                cout << "Введите длину параллелепипеда: " << endl;

                cin >> a1;

                cout << "Введите ширину параллелепипеда: " << endl;

                cin >> b1;

                cout << "Введите высоту параллелепипеда: " << endl;

                cin >> c1;

                abcd.min(a1, b1, c1);

                break;

            }

            };

        } while (x != 0);

    }

 

 

 

main(){

    setlocale(LC_ALL, "RUS");

    int a[3];

    int ab, ac, aa1;

    cout << "Введите координаты точки A: " << endl;

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

        cin >> a[i];

    cout << "Введите длину сторон: " << endl << "AB=";

    cin >> ab;

    cout << "AC=";

    cin >> ac;

    cout << "AA1=";

    cin >> aa1;

    menu(a, ab, ac, aa1);

    system("pause");}