Форум программистов, компьютерный форум CyberForum.ru

Описать класс "Прямоугольник со сторонами, параллельными осям координат" - C++

Восстановить пароль Регистрация
 
denpanov
2 / 2 / 0
Регистрация: 19.10.2012
Сообщений: 77
21.05.2014, 21:21     Описать класс "Прямоугольник со сторонами, параллельными осям координат" #1
Составить описание класса прямоугольгиков со сторонами, параллельными
осям координат. Предусмотреть возможность
1) перемещения прямоугольников на плоскости;
2) изменения размеров;
3) построения наименьшего прямоугольника, содержащего два заданных прямоугольника;
4) построения прямоугольника, являющегося общей частью (пересечением) двух
прямоугольков.
Написать программу, демонстрирующую работу с этим классом. Программа должна
содержать меню, позволяющее осуществить проверку всех методов класса.

C++ (Qt)
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <stdlib.h>
#include <windows.h>
#include <stdio.h>
 class PRY{ 
        public:
            PRY(int=0,int=0,int=1,int=1);
   int x,y,a,b;
     void move(int,int);
     void resize(int,int);
     PRY min(PRY);
     PRY max(PRY);
     void Out();
        };
        
    PRY::PRY(int x,int y,int a,int b)
      {this->x=x;
       this->y=y;
       this->a=abs(a);
       this->b=abs(b); }
   
    void PRY::move(int xx,int yy)
      { x+=xx; y+=yy; }
      
     void PRY::resize(int xx, int yy) 
      { a+=xx; b+=yy;
        if (a<0) a=0;
        if (b<0) b=0; }
       
    PRY PRY::min(PRY z)
      { PRY zz;
        int vx[4],vy[4];
        vx[0]=x; vx[1]=x+a; vx[2]=z.x; vx[3]=z.x+z.a;
        vy[0]=y; vy[1]=y+b; vy[2]=z.y; vy[3]=z.y+z.b;
        int i,j,k;
        for (i=0;i<4;i++)
         for (j=0;j<3;j++)
           if (vx[j]>vx[j+1]){k=vx[j];vx[j]=vx[j+1];vx[j+1]=k;}
        for (i=0;i<4;i++)
         for (j=0;j<3;j++)
           if (vy[j]>vy[j+1]){k=vy[j];vy[j]=vy[j+1];vy[j+1]=k;}
        if (vx[3]-vx[0]<a+z.a && vy[3]-vy[0]<b+z.b)
           {zz.x=vx[1];zz.a=vx[2]-vx[1];zz.y=vy[1];zz.b=vy[2]-vy[1];}
            else zz.x=zz.y=zz.a=zz.b=0 ;
            return zz;}
        
    PRY PRY::max (PRY z)
         {PRY zz;
          if (x<z.x) zz.x=x; else zz.x=z.x;            
          if (y<z.y) zz.y=y; else zz.y=z.y;
          if (x+a<z.x+z.a) zz.a=z.x+z.a-zz.x; else zz.a=x+a-zz.x;            
          if (y+b<z.y+z.b) zz.b=z.y+z.b-zz.y; else zz.b=y+b-zz.y; 
          return zz;}
          
    void PRY::Out()
      {cout<<"x="<<x<<"y="<<y<<"a"<<a<<"b"<<b;}

Подскажите что не правильно и как сделать меню?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2014, 21:21     Описать класс "Прямоугольник со сторонами, параллельными осям координат"
Посмотрите здесь:

C++ Написать класс "вектор на плоскости" заданный в системе декартовых координат
C++ Описать процедуру RectPS(x1, y1, x2, y2, P), вычисляющую периметр P прямоугольника со сторонами, параллельными осям координат, по координатам...
Составить описание класса прямоугольников со сторонами, параллельными осям координат C++
C++ Класс "Прямоугольник" с олным набором функционала (расчёт площади, периметра и т.д.)
Составить описание класса прямоугольников со сторонами, параллельными осям координат C++
C++ Создать класс "прямоугольник" и перегрузить операцию отношения "равно"
C++ Описать класс "Контейнер" как объект, предназначенный для транспортировки классов "Строительных блоков"
Составить описание класса прямоугольников со сторонами, параллельными осям координат C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 01:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru