
Добавил:
yermolenkoigor9
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:First_magistr / First_course_magistr / Classes_modification_lab3 / funcs
.cpp#include "precomp.h"
#include "funcs.h"
point::point(float xn, float yn)
{
x = xn;
y = yn;
}
rectangle::rectangle()//прямоугольник по-умолчанию
{
upleft.x = 2.;
dnrite.x = 3;
upleft.y = 2.;
dnrite.y = 1.;
colour = "Black like Malevich's";
}
rectangle::rectangle(point ul,point dr, string cl) // конструктор с параметрами
{
upleft = ul;
dnrite = dr;
colour = cl;
}
rectangle::rectangle(float ulx, float uly, float drx, float dry, string cl) // прямоугольник по точкам
{
upleft.x = ulx;
dnrite.x = drx;
upleft.y = uly;
dnrite.y = dry;
colour = cl;
}
void point::print_point() // красиво пишет координату точки
{
cout <<"("<< x <<","<< y <<")"<< endl;
}
void rectangle::get_upleft() // координаты верхнего левого угла
{
upleft.print_point();
}
void rectangle::get_dnrite() // координаты нижнего правого угла
{
dnrite.print_point();
}
void rectangle::get_colour() // узнать цвет прямоугольника
{
cout << colour << endl;
}
void rectangle::get_square() // задать квадрат
{
float a;
cout<<"Введите длину стороны квадрата"<<endl;
cin>>a;
dnrite.x = upleft.x + a;
dnrite.y = upleft.y - a;
}
void rectangle::get_motion() // сместить прям-ник
{
float xm,ym;
cout<<"Введите смещение по Y"<<endl;
cin>>ym;
cout<<"Введите смещение по X"<<endl;
cin>>xm;
dnrite.x += xm;
dnrite.y += ym;
upleft.x += xm;
upleft.y += ym;
}
void rectangle::cornerings() // поворот прям-ника
{
float fi,ulx,uly,drx,dry,cenx,ceny;
cout<<"Введите угол поворота"<<endl;
cin>>fi;
cenx = 0.5*(upleft.x+dnrite.x);//центр диагонали
ceny = 0.5*(upleft.y+dnrite.y);
ulx=upleft.x;
uly=upleft.y;
drx=dnrite.x;
dry=dnrite.y;
dnrite.x = cenx+(drx-cenx)*cos(fi)-(dry-ceny)*sin(fi);//вращение вокруг центра прямоугольника
dnrite.y = ceny+(dry-ceny)*cos(fi)+(drx-cenx)*sin(fi);
upleft.x = cenx+(ulx-cenx)*cos(fi)-(uly-ceny)*sin(fi);
upleft.y = ceny+(uly-ceny)*cos(fi)+(ulx-cenx)*sin(fi);
}
void rectangle::changecolr() // задать новый цвет
{
string nc;
cout<<"Введите новый цвет"<<endl;
cin >> nc;
colour = nc;
}
void rectangle::lenhthdiag() // узнать длину диагонали
{
float length,width,diag;
length = dnrite.x-upleft.x;
width = upleft.y-dnrite.y;
diag = sqrt(length*length+width*width);
cout<<"Высота: "<<width<<" Ширина: "<<length<<" Диагональ: "<<diag<<endl;
}
void isitsquare(rectangle R) // проверка на квадратность
{
float length,width;
length = R.dnrite.x - R.upleft.x;
width = R.upleft.y - R.dnrite.y;
if(length == width)
cout<< "Да, это квадрат" <<endl;
else
cout<<"Нет, это не квадрат"<<endl;
}
void rectangle::everyelmnt() // с клавиатуры все данные класса
{
float q1,q2,q3,q4;
string q5;
cout<<"Введите координату х верхней левой вершины"<<endl;
cin>>q1;
cout<<"Введите координату у верхней левой вершины"<<endl;
cin>>q2;
cout<<"Введите координату х нижней правой вершины"<<endl;
cin>>q3;
cout<<"Введите координату н нижней правой вершины"<<endl;
cin>>q4;
cout<<"Введите новый цвет прямоугольника"<<endl;
cin>>q5;
rectangle R1(q1,q2,q3,q4,q5);
}
int menu(int max_menu) {
int i_menu;
cout << "\n\nВведите номер действия 1-" << max_menu << endl;
do
{
cout << "1 - Выход" << endl;
cout << "2 - Вывести координату верхней левой вершины" << endl;
cout << "3 - Вывести координату нижней правой вершины" << endl;
cout << "4 - Вывести цвет прямоугольника" << endl;
cout << "5 - Задать квадрат от верхней левой вершины" << endl;
cout << "6 - Задать каждый элемент прямоугольника" << endl;
cout << "7 - Сместить прямоугольник" << endl;
cout << "8 - Повернуть прямоугольник" << endl;
cout << "9 - Изменение цвета " << endl;
cout << "10- Вычисления длин сторон и диагонали" << endl;
cout << "11- А не квадрат ли это случаем? " << endl;
cout << endl;
cin >> i_menu;
}
while( (i_menu < 0) || (i_menu > max_menu));
return i_menu;
}
Соседние файлы в папке Classes_modification_lab3