Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
7
Добавлен:
18.08.2019
Размер:
4.25 Кб
Скачать
#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
  • #
    18.08.20191.38 Кб7Classes_modification_lab3.cbp
  • #
    18.08.2019507 б8Classes_modification_lab3.depend
  • #
    18.08.20191.49 Кб8Classes_modification_lab3.layout
  • #
    18.08.20194.25 Кб7funcs.cpp
  • #
    18.08.2019138 б7funcs.h
  • #
    18.08.20191.05 Кб7main.cpp
  • #
    18.08.20191.38 Кб7precomp.cpp
  • #
    18.08.2019850 б7precomp.h