Здравствуйте!!!Помогите пожалуйста подкорректировать мой код, надо изменить конструктор, так, чтобы я ввел две координаты, а остальные он сам считал
Код:
/* Вариант 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;
}