Новичок
Профиль
Группа: Участник
Сообщений: 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
|