Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2013, 19:58   #1
Anya13
 
Регистрация: 01.04.2013
Сообщений: 6
Печаль Создание класса в с++

Ребят!!!!! нужна помощь в написании программы!!!у кого есть возможность,помогите,пожалуйста!!
условие задачи следующее:Составить описание класса прямоугольников со сторонами, параллельными осям координат. Предусмотреть возможность перемещения прямоугольников на плоскости, изменение размеров, построение наименьшего прямоугольника, содержащего два заданных прямоугольника, и прямоугольника, являющегося общей частью (пересечением) двух прямоугольников.
Anya13 вне форума Ответить с цитированием
Старый 01.04.2013, 20:30   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

чем помочь?

Код:
class Rect() {
  float x_, y_, h_, w_;
public:
  Rect(float x, float y, float h, float w) : x_(x), y_(y), h_(h), w_(w) { }
  float x() { return x_; }
  void x(float x) { x_ = x; }
 // и так еще 6 методов
};

про пересечение и т.п. нарисуй на бумажке и посмотри что там надо получить

Последний раз редактировалось rrrFer; 01.04.2013 в 20:33.
rrrFer вне форума Ответить с цитированием
Старый 01.04.2013, 20:38   #3
Anya13
 
Регистрация: 01.04.2013
Сообщений: 6
По умолчанию

ну вот я нашла,но она не работает почему -то ,после введения данных вылетает((((
Код:
#include <iostream.h>
enum boolean {FALSE, TRUE};
class TPoint {
     public:
         int  x,y;
         int movePoint ( int newx, int newy);
         int removing  ( int dx, int dy );
    };
int TPoint::movePoint(int newx, int newy) {
     x = newx;
     y = newy;
     return 0;
    }
int TPoint::removing(int dx, int dy) {
     x += dx;
     y += dy;
     return 0;
    }
class TSquare {
     public:
         TPoint  a,b;  // a - top left corner
                   // b - bottom right corner
         void move(int dx,int dy) {
             a.removing(dx,dy);
             b.removing(dx,dy);
            }
         void grow(int dx,int dy) {
             a.x += dx;
             a.y += dy;
             b.x += dx;
             b.y += dy;
            }
         void intersect(const TSquare &r);
         void Union(const TSquare &r);
         boolean contains(const TPoint &p);
         boolean IsEmpty();
         TSquare(int ax, int ay, int bx, int by) { // constructor
                 a.x = ax;
                 a.y = ay;
                 b.x = bx;
                 b.y = by;
                };
         TSquare() { a.x = a.y = b.x = b.y = 0; }; // constructor
    };
void TSquare::intersect(const TSquare &r) {
     a.x = (a.x > r.a.x) ? a.x : r.a.x; // max
     b.x = (b.x < r.b.x) ? b.x : r.b.x; // min
     a.y = (a.y > r.a.y) ? a.y : r.a.y; // max
     b.y = (b.y < r.b.y) ? b.y : r.b.y; // min
    };
void TSquare::Union(const TSquare &r) {
     a.x = (a.x <= r.a.x) ? a.x : r.a.x;
     a.y = (a.y <= r.a.y) ? a.y : r.a.y;
     b.x = (b.x >= r.b.x) ? b.x : r.b.x;
     b.y = (b.y >= r.b.y) ? b.y : r.b.y;
    };
boolean TSquare::contains(const TPoint &p) {
     return boolean(p.x >= a.x && p.x <= b.x && p.y >= a.y && p.y <= b.y);
    };
boolean TSquare::IsEmpty() {
     return boolean(a.x >= b.x || a.y >= b.y );
    };
void main() {
     int ax,ay,bx,by;
     cout << "Input square #1:";
     cout << "\nTop left corner     ->" << "x=";
     cin  >> ax;
     cout << "  y=";
     cin  >> ay;
     cout << "\nBottom right corner ->" << "x=";
     cin  >> bx;
     cout << "  y=";
     cin  >> by;
     TSquare S1(ax,ay,bx,by);
     cout << "Input square #2:";
     cout << "\nTop left corner     ->" << "x=";
     cin  >> ax;
     cout << "  y=";
     cin  >> ay;
     cout << "\nBottom right corner ->" << "x=";
     cin  >> bx;
     cout << "  y=";
     cin  >> by;
     TSquare S2 (ax,ay,bx,by);
    }

Последний раз редактировалось Anya13; 01.04.2013 в 21:00.
Anya13 вне форума Ответить с цитированием
Старый 01.04.2013, 21:17   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
ну вот я нашла,но она не работает почему -то ,после введения данных вылетает((((
Нашли... а поняли?
И что значит - "вылетает"? Приведённая программа запрашивает у пользователя восемь чисел и завершает работу. Как можно видеть, ничего сверх этого в ней нет.
Abstraction вне форума Ответить с цитированием
Старый 01.04.2013, 21:26   #5
Anya13
 
Регистрация: 01.04.2013
Сообщений: 6
По умолчанию

не поняла...и просила помощи в написании этих классов
Anya13 вне форума Ответить с цитированием
Старый 01.04.2013, 22:31   #6
Anya13
 
Регистрация: 01.04.2013
Сообщений: 6
По умолчанию

ну вот вроде код на с#...помогите перевести в с++..(
Код:
public class rectangle
    {
        public static bool brake = false;
        int x, y, shirina, visota;
 
        public rectangle(int x, int y, int shirina, int visota)
        {
            this.x = x;
            this.y = y;
            this.shirina = shirina;
            this.visota = visota;
        }
        public void perem(int l, int h, ref int x, ref int y)
        {
            x -= l;
            y -= h;
        }
 
        public void sovm(int x1, int x2, int y1, int y2, int shirina1, int shirina2, int visota1, int visota2)
        {
 
            if (x1 > x2)
            {
                int buf = x1;
                x1 = x2;
                x2 = buf;
            }
            if (x1 + shirina1 < x2 + shirina2)
            {
                x = x1;
                shirina = x2 - x1 + shirina2;
            }
            else
            {
                x = x1;
                shirina = shirina2;
            }
            ////////////////////////
            if (y1 > y2)
            {
                int buf = y1;
                y1 = y2;
                y2 = buf;
            }
            if (y1 + visota1 < y2 + visota2)
            {
                y = y1;
                visota = y2 - y1 + visota2;
            }
            else
            {
                y = y1;
                visota = visota2;
            }
 public void ob(rectangle r)
{
  int x,y,l,w;
  x=(this.x>r.x)?this.x:r.x;
  y=(this.y>r.y)?this.y:r.y;
  
  l=((this.x+this.shirina)>(r.x+r.shirina))?this.shirina:r.shirina;
  w=((this.y+this.visota)>(r.y+r.visota))?this.visota:r.visota;


}
            Console.WriteLine("x={0},y={1},shirina={2},visota={3}", x, y, shirina, visota);
        }
 
 
 
        public void izm(int x, int y, ref int shirina, ref int visota)
        {
            shirina -= x;
            visota -= y;
        }
 
        public void show(int x, int y, int shirina, int visota)
        {
            Console.WriteLine("{0} {1} {2} {3}", x, y, shirina, visota);
        }
 
    }
    //-----------------------------------------------------------------------------------------------------------------------
    class Go
    {
        static void Main(string[] args)
        {
 
            Console.WriteLine("Строим по левой нижней точке, высоте и длине");
            Console.WriteLine("Варианты команд:\n Perem Izm Show Sovm Exit");
            Console.WriteLine("Введите x");
            int x = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Введите y");
            int y = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Введите ширину");
            int shirina = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Введите высоту");
            int visota = Convert.ToInt32(Console.ReadLine());
            int x2 = 3, y2 = 2, shirina2 = 3, visota2 = 2;
            rectangle rect1 = new rectangle(x, y, shirina, visota);
            // Здесь менять на сколько перемещать и изменять.
            int izmx = 1, izmy = 1;
            int perx = 1, pery = 1;
            //
            Console.WriteLine("Введите комманду");
            do
            {
                switch (Console.ReadLine())
                {
                    case "Perem": rect1.perem(perx, pery, ref x, ref y); break;
                    case "Izm": rect1.izm(izmx, izmy, ref shirina, ref visota); break;
                    case "Show": rect1.show(x, y, shirina, visota); break;
                    case "Sovm": rect1.sovm(x, x2, y, y2, shirina, shirina2, visota, visota2); break;
                    case "Exit": rectangle.brake = true; break;
                    default: Console.WriteLine("вводи!"); break;
                }
            } while (!rectangle.brake);
        }
    }

Последний раз редактировалось Anya13; 01.04.2013 в 23:15.
Anya13 вне форума Ответить с цитированием
Старый 01.04.2013, 23:06   #7
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Не так как минимум то что в заголовке темы речь о С++, а приведенный кусок кода написан на С#.
Son Of Pain вне форума Ответить с цитированием
Старый 02.04.2013, 11:30   #8
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
ну вот вроде код на с#...помогите перевести в с++..(
Попробуйте задать конкретный вопрос. "Сделать всё от начала и до конца" лично я "помощью" не называю. И имейте в виду, что первый код ещё туда-сюда, а второй (который на C#) - страх и ужас, за образец брать категорически не советую.

Давайте попробуем так:
Цитата:
Составить описание класса прямоугольников со сторонами, параллельными осям координат.
Вот чисто это предложение - знаете как выполнить? Если нет, то что Вы уже прочитали про классы? Можете ли привести пример хоть какого-нибудь класса и объяснить смысл каждой строки в этом примере?
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создание класса с# Georg55 Помощь студентам 4 21.02.2013 01:05
Создание класса qwertyk Общие вопросы C/C++ 2 16.01.2013 22:56
Создание класса Kiniva Компоненты Delphi 1 08.06.2012 12:01
Создание класса Puhovoi Помощь студентам 1 24.03.2011 11:09
Создание класса eksted Общие вопросы Delphi 8 30.06.2010 12:42