Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Задача на классы


Автор: makmar 28.10.2008, 11:05
На С++:
Построить систему классов для описания плоских геометрических фигур: круга, квадрата, прямоугольника.
Предусмотреть методы для создания объектов, премещения на плоскости, изменения размеров и вращения на заданный угол...


Надеюсь на помощь....
Заранее большое спасибо...

Автор: Lazin 28.10.2008, 11:51
Код

class TransformMatrix;///<матрица, размером 3х3
class Vertex;///< вершина, вектор из 3х элементов

....
class Shape
{
public:
virtual void transform(const TransformMatrix& m) = 0;
};

class Line : public Shape
{
    Vertex begin, end;
public:
    Line(const Vertex& b, const Vertex& e): begin(b), end(e) {}
    
    void transform(const TransforMatrix& m)
    {
        begin = begin*m;//умножением вектора с координатами на матрицу, получаем любое преобразование координат
        end = end*m;
    }
};



Автор: Dmi3ev 28.10.2008, 11:57
вот окружность, например (взял кусочек, поэтому не смотри, что так много всего подключено):
Код

#ifndef MYCIRCLE_H
#define MYCIRCLE_H
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <math.h>
#include <dos.h>

class MyCircle
{
public:
MyCircle(int a, int b, int k){x=a; y=b; r=k;};
void Draw()
 {
  int gd,gm;
  gd= DETECT;
  initgraph(&gd, &gm, "..\\BGI");
  setcolor(getmaxcolor());
  circle(x, y, r);
 };
~MyCircle(){};
private:
double x, y, r;
};
#endif

для проверки можно написать программу:
Код

MyCircle myc(50,50,20);
myc.Draw();
sleep(1000);

а дальше можно и самому подумать немного.

Автор: Dmi3ev 28.10.2008, 12:13
Код

#ifndef MYCIRCLE_H
#define MYCIRCLE_H
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <math.h>
#include <dos.h>

class MyCircle
{
public:
MyCircle(int a, int b, int k){x=a; y=b; r=k;};
void Draw()
 {
  int gd,gm;
  gd= DETECT;
  initgraph(&gd, &gm, "..\\BGI");
  setcolor(getmaxcolor());
  circle(x, y, r);
 };
void GoTo(int a, int b)
{
 x=a; y=b;
 clrscr();
 circle(x, y, r);
};
~MyCircle(){};
private:
double x, y, r;
};
#endif

тут добавлен метод перемещения GoTo(x,y)

Автор: makmar 3.11.2008, 06:47
Всем спасибо, тоько я хотел еще пряоугольник...=)))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)