Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
26 / 26 / 17
Регистрация: 08.04.2012
Сообщений: 202
1

Класс Прямоугольник

02.02.2015, 13:18. Показов 3696. Ответов 2
Метки нет (Все метки)

Разработайте с использованием TDD класс , моделирующий сущность «Прямоугольник».
Прямоугольник обладает следующими свойствами:
• Ширина (width)
• Высота (height)
• Координата X левого края (left)
• Координата Y верхнего края (Top)
• Координата X правого края (Right)
• Координата Y нижней стороны (Bottom)
• Площадь (Area)
• Периметр (Perimeter)

Координаты и размеры прямоугольника задаются числами с плавающей запятой.
Размеры прямоугольника не могут быть отрицательными

Конструктор данного класса принимает координаты левого верхнего угла прямоугольника, а также его ширину и высоту.
Над прямоугольником можно выполнить следующие действия:
• Перенести вдоль заданного вектора на dx и dy
void Move(double dx,double dy)
• Отмасштабировать прямоугольник с использованием масштабных коэффициентов sx и sy.
void Scale(double sx, double sy)
При масштабировании координаты левого верхнего угла прямоугольника остаются без изменения, а изменяется только его размер. Если или является отрицательным числом, то масштабирования не происходит
• Найти пересечение данного прямоугольника с другим прямоугольником:
bool Intersect(CRectangle const & other)
Данный метод возвращает , если прямоугольники пересекаются, и изменяет характеристики текущего прямоугольника. Если прямоугольники не пересекаются, то данный метод возвращает и сбрасывает ширину и высоту прямоугольника в 0 (координаты верхнего левого угла остаются без изменений).

В задании нечего не сказано каким образом возвращать значение данных-членов класса. На сколько корректно это сделать как у меня с помощью структуры? Делать кучу функций для каждого параметра прямоугольника не удобно. Есть варианты лучше?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#ifndef RECTANGLE1_H_
#define RECTANGLE1_H_
class CRectangle
{
private:
    double Width_;
    double Height_;
    double XLeft_;
    double YTop_;
    double XRight_;
    double YBottom_;
    double Area_;
    double Perimeter_;
public:
    struct Rectangle
    {
        double Width;
        double Height;
        double XLeft;
        double YTop;
        double XRight;
        double YBottom;
        double Area;
        double Perimeter;
    };
    CRectangle(double const XLeft, double const YTop, double const Width, double const Height);
    ~CRectangle(){}
    void Move(double dx,double dy);
    void Scale(double sx, double sy);
    bool Intersect(CRectangle const & other);
    void RenewStructRectangle(Rectangle & r);//обновление информации в структуре
};
#endif;
На сколько правильно у меня работает перенос вдоль вектора и масштабирование?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void CRectangle::Move(double dx,double dy)
{
    XLeft_=XLeft_+dx;
    YTop_=YTop_+dy;
    XRight_=XLeft_+Width_;
    YBottom_=YTop_-Height_;
}
void CRectangle::Scale(double sx, double sy)
{
    if (sx>0.0 && sy>0.0)
    {
        Width_=Width_*sx;
        Height_=Height_*sy;
        XRight_=XLeft_+Width_;
        YBottom_=YTop_-Height_;
        Area_=Height_*Width_;
        Perimeter_=2*(Height_+Width_);
    }
}
В примере встречал такой макрос:
C++
1
INT_MAX
А как выглядит такой макрос для double?
C++
1
DOUBLE_MAX//так ошибочно
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.02.2015, 13:18
Ответы с готовыми решениями:

Написать класс прямоугольник и построить прямоугольник, пересечением двух других
Помогите пожалуйста с задание до делать, нужно построить треугольник являющегося общей частью...

Иерархия геометрических объектов: клас точка->класс квадрат->класс прямоугольник
Иерархия геометрических объектов: класс точка->класс квадрат->класс прямоугольник. Построить эту...

класс прямоугольник.
Здравствуйте! Помогите пожалуйста исправить ошибки. Задача:нарисовать прямоугольник(длины сторон...

класс - прямоугольник
Нужно найти площадь и периметр прямоугольника.... вот написала код...но он не...

2
26 / 25 / 8
Регистрация: 19.01.2015
Сообщений: 84
02.02.2015, 22:34 2
про вывод параметров: я бы сделал такую структуру вне класса(если уж по одной выводить не хочется). и написал бы функцию: Rectangle GetParampampam(){...return AllPar;} - которой создается объект этой структуры (Rectangle ) и соответственно всё друг дружке присваивается.
0
Заблокирован
03.02.2015, 20:22 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#define MB_LEN_MAX    5             /* max. # bytes in multibyte char */
#define SHRT_MIN    (-32768)        /* minimum (signed) short value */
#define SHRT_MAX      32767         /* maximum (signed) short value */
#define USHRT_MAX     0xffff        /* maximum unsigned short value */
#define INT_MIN     (-2147483647 - 1) /* minimum (signed) int value */
#define INT_MAX       2147483647    /* maximum (signed) int value */
#define UINT_MAX      0xffffffff    /* maximum unsigned int value */
#define LONG_MIN    (-2147483647L - 1) /* minimum (signed) long value */
#define LONG_MAX      2147483647L   /* maximum (signed) long value */
#define ULONG_MAX     0xffffffffUL  /* maximum unsigned long value */
#define LLONG_MAX     9223372036854775807i64       /* maximum signed long long int value */
#define LLONG_MIN   (-9223372036854775807i64 - 1)  /* minimum signed long long int value */
#define ULLONG_MAX    0xffffffffffffffffui64       /* maximum unsigned long long int value */
стоило открыть одну библиотеку

Добавлено через 49 секунд
т.е. для double пиши
C++
1
LLONG_MAX
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.02.2015, 20:22

Класс Rectangle (прямоугольник)
друзья , у меня экзамен . а я не бум бум в c++ . помогите кто сможет Создать класс Rectangle...

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

Класс прямоугольник (Visual C++)
Необходимо создать класс прямоугольник и производный класс пятиугольник.Необходимо перемещать...

Описать класс «Прямоугольник»
Описать класс «Прямоугольник» (имеет длину и ширину, метод рассчитывает площадь и периметр, а также...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru