Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Класс прямоугольник 
:(
    Опции темы
Кли
Дата 30.11.2018, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 20.11.2016

Репутация: нет
Всего: нет



Здравствуйте!!!Помогите пожалуйста подкорректировать мой код, надо изменить конструктор, так, чтобы я ввел две координаты, а остальные он сам считал
Код

/* Вариант 7
Составить описание класса прямоугольников со сторонами, параллельными осям координат. 
Предусмотреть возможность перемещения прямоугольников на плоскости, изменение размеров, построение наименьшего прямоугольника, 
содержащего две заданных прямоугольника и прямоугольника, являющегося общей частью(пересечением) двух прямоугольников.
Написать программу, демонстрирующую работу с этим классом.
Программа должна содержать меню, позволяющее осуществить проверку всех методов класса. */

#include "stdafx.h"
#include <iostream>
#include <Windows.h>
using namespace std;
class rectangle 
{
    private:
        double x1,x2,y1,y2,dx,dy;
    public:
        rectangle(double a,double b,double c,double d): x1(a),x2(b),y1(c),y2(d) {} // конструктор с параметрами
        rectangle(): x1(2),x2(5),y1(2),y2(0) {}  // конструктор по умолчанию
        ~rectangle() {} // деструктор 
        void Input();
        void Result();
        void Peremeshenie();
        void Size();
        void Square();
        void Minimal();
        void Сross(); 
};
 
void rectangle::Input() 
{
    cout << "Введите координату х левой точки" << endl; cin >> x1;
    cout << "Введите координату y верхней точки" << endl; cin >> y1;
    cout << "Введите координату х правой точки" << endl; cin >> x2;
    cout << "Введите координату y нижней точки" << endl; cin >> y2;
}
 
void rectangle::Result() 
{
    cout << " A:" << "(" << x1 << "," << y1 << ")" << endl;
    cout << " B:" << "(" << x2 << "," << y1 << ")" << endl;
    cout << " C:" << "(" << x2 << "," << y2 << ")" << endl;
    cout << " D:" << "(" << x1 << "," << y2 << ")" << endl;
}
 
void rectangle::Peremeshenie()
{
    cout << "На сколько переместить по X?" << endl;
    cin >> dx;
    cout << "На сколько переместить по Y?" << endl;
    cin >> dy;
    cout << " A:" << "(" << x1 + dx << "," << y1 + dy << ")" << endl;
    cout << " B:" << "(" << x2 + dx << "," << y1 + dy << ")" << endl;
    cout << " C:" << "(" << x2 + dx << "," << y2 + dy << ")" << endl;
    cout << " D:" << "(" << x1 + dx << "," << y2 + dy << ")" << endl;
}
 
void rectangle::Size() 
{
    cout << "На сколько изменить Х?" << endl;
    cin >> dx;
    cout << "На сколько изменить Y?" << endl;
    cin >> dy;
    x2 += dx; y2 += dy;
    Result();
}

void rectangle::Minimal() 
{
    double x3,x4,y3,y4,x_min = x1,x_max = x1,y_min = y1,y_max = y1,AB,BC,AC;
    cout << " 2 прямоугольник:" << endl;
    cout << "Введите координату х левой точки" << endl; cin >> x3;
    cout << "Введите координату y верхней точки" << endl; cin >> y3;
    cout << "Введите координату х правой точки" << endl; cin >> x4;
    cout << "Введите координату y нижней точки" << endl; cin >> y4;
    cout << endl << "Вы ввели следующие координаты 1 прямоугольника:" << endl;
    cout << " A:" << "(" << x1 << "," << y1 << ")" << endl;
    cout << " B:" << "(" << x2 << "," << y1 << ")" << endl;
    cout << " C:" << "(" << x2 << "," << y2 << ")" << endl;
    cout << " D:" << "(" << x1 << "," << y2 << ")" << endl;
    cout << endl;
    cout << "Вы ввели следующие координаты 2 прямоугольника:" << endl;
    cout << " A:" << "(" << x3 << "," << y3 << ")" << endl;
    cout << " B:" << "(" << x4 << "," << y3 << ")" << endl;
    cout << " C:" << "(" << x4 << "," << y4 << ")" << endl;
    cout << " D:" << "(" << x3 << "," << y4 << ")" << endl;
    cout << endl;
    double A[4]= {x1,x2,x3,x4}, B[4]= {y1,y2,y3,y4};
    for(int i = 0; i < 4; i++)
    {
        if(x_max < A[i])
        {
            x_max = A[i];
        }
        if(y_max < B[i])
        {
            y_max = B[i];
        }
        if(x_min > A[i])
        {
            x_min = A[i];
        }
        if(y_min > B[i])
        {
            y_min = B[i];
        }
    }
    cout <<" Наименьший прямоугольник содержащий оба предыдущих имеет следующие координаты: " << endl;
    cout << " A:" << "(" << x_min << "," << y_max << ")" << endl;
    cout << " B:" << "(" << x_max << "," << y_max << ")" << endl;
    cout << " C:" << "(" << x_max << "," << y_min << ")" << endl;
    cout << " D:" << "(" << x_min << "," << y_min << ")" << endl;
}
 
void rectangle::Сross() 
{
    double x3,x4,y3,y4,x_min = x1,x_max = x1,y_min = y1,y_max = y1,x1_sred,x2_sred,y1_sred,y2_sred;
    cout << " 2 прямоугольник:" << endl;
    cout << "Введите координату х левой точки" << endl; cin >> x3;
    cout << "Введите координату y верхней точки" << endl; cin >> y3;
    cout << "Введите координату х правой точки" << endl;    cin >> x4;
    cout << "Введите координату y нижней точки" << endl;    cin >> y4;
    cout << endl;
    cout << "Вы ввели следующие координаты 1 прямоугольника:" << endl;
    cout << " A:" << "(" << x1 << "," << y1 << ")" << endl;
    cout << " B:" << "(" << x2 << "," << y1 << ")" << endl;
    cout << " C:" << "(" << x2 << "," << y2 << ")" << endl;
    cout << " D:" << "(" << x1 << "," << y2 << ")" << endl;
    cout << endl;
    cout << "Вы ввели следующие координаты 2 прямоугольника:" << endl;
    cout << " A:" << "(" << x3 << "," << y3 << ")" << endl;
    cout << " B:" << "(" << x4 << "," << y3 << ")" << endl;
    cout << " C:" << "(" << x4 << "," << y4 << ")" << endl;
    cout << " D:" << "(" << x3 << "," << y4 << ")" << endl;
    cout << endl;
    double A[4]= {x1,x2,x3,x4}, B[4]= {y1,y2,y3,y4};
    for(int i = 0; i < 4; i ++)
    {
        if(x_max < A[i])
        {
            x_max = A[i];
        }
        if(y_max < B[i])
        {
            y_max = B[i];
        }
        if(x_min > A[i])
        {
            x_min = A[i];
        }
        if(y_min > B[i])
        {
            y_min = B[i];
        }
    }
    for(int i = 0; i < 4; i ++)
    {
        if((A[i] != x_max) && (A[i] != x_min))
        {
            x1_sred = A[i];
            break;
        }
    }
    for(int i = 0; i < 4; i ++)
    {
        if((A[i] != x_max) && (A[i] != x_min) && (A[i] != x1_sred))
        {
            x2_sred = A[i];
            break;
        }
    }
    for(int i = 0; i < 4; i ++)
    {
        if((B[i] != y_max) && (B[i] != y_min))
        {
            y1_sred = B[i];
            break;
        }
    }
    for(int i = 0; i < 4; i ++)
    {
        if((B[i] != y_max) && (B[i] != y_min) && (B[i] != y1_sred))
        {
            y2_sred = B[i];
            break;
        }
    }
        cout <<" Прямоугольник на пересечении двух предыдущих имеет следущие координаты: " << endl;
        cout << " A:" << "(" << x2_sred << "," << y1_sred << ")" << endl;
        cout << " B:" << "(" << x1_sred << "," << y1_sred << ")" << endl;
        cout << " C:" << "(" << x1_sred << "," << y2_sred << ")" << endl;
        cout << " D:" << "(" << x2_sred << "," << y2_sred << ")" << endl;
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    cout << " 1 - Ввод данных \n 2 - Вывод \n 3 - Перемещение \n 4 - Изменение размера\n"
        " 5 - Минимальный прямоугольник \n 6 - Прямоугольник получившийся на пересечении \n 0 - Выход\n" << endl;
    rectangle A;
    char Control;
        cout << "> ";
        cin >> Control;
        switch (Control)
        {
            case '1': 
                A.Input();
                cout << "> ";
                cin >> Control;
            case '2': 
                A.Result();
                cout << "> ";
                cin >> Control;
            case '3': 
                A.Peremeshenie();
                cout << "> ";
                cin >> Control;
            case '4': 
                A.Size();
                cout << "> ";
                cin >> Control;
            case '5': 
                A.Minimal();
                cout << ">";
                cin >> Control;
            case '6': 
                A.Сross();
                cout << "> ";
                cin >> Control;
            case '0': break;
        }
            system("pause");
            return 0;
}


Это сообщение отредактировал(а) Кли - 30.11.2018, 15:18
PM MAIL   Вверх
kapbepucm
Дата 30.11.2018, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Код
rectangle() {Input();}  // конструктор по умолчанию
Так чтоли?


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
Кли
Дата 30.11.2018, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 20.11.2016

Репутация: нет
Всего: нет



чтоб я ввел "диагональные" вершины, а дальше одна получилось изменением х, вторая - у.
PM MAIL   Вверх
kapbepucm
Дата 30.11.2018, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Цитата(Кли @  30.11.2018,  17:12 Найти цитируемый пост)
чтоб я ввел "диагональные" вершины
для этого вызывайте метод Input() вашего класса
Цитата(Кли @  30.11.2018,  17:12 Найти цитируемый пост)
а дальше одна получилось изменением х, вторая - у
ну для этого вызывайте, что там больше подходит: Peremeshenie() или Size()...

Это сообщение отредактировал(а) kapbepucm - 30.11.2018, 21:36


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
Кли
Дата 30.11.2018, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 20.11.2016

Репутация: нет
Всего: нет



Цитата(kapbepucm @  30.11.2018,  21:36 Найти цитируемый пост)
для этого вызывайте метод Input() вашего класс

то что вы написали выше?


Цитата(kapbepucm @  30.11.2018,  21:36 Найти цитируемый пост)
ну для этого вызывайте, что там больше подходит: Peremeshenie() или Size()...

это где вызывать надо?
че то я туплю
PM MAIL   Вверх
kapbepucm
Дата 1.12.2018, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Запустите выполнение кода,
нажмите 1- будет диалог ввода координат, <-- чем не устраивает?
нажатие 3 и 4 приведёт к изменению.

Это сообщение отредактировал(а) kapbepucm - 1.12.2018, 17:19


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1530 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.