Консультация № 187546
23.09.2013, 18:57
145.00 руб.
0 3 1
Здравствуйте! Прошу помощи в следующем:
Решить задачку Её можно выполнить как С++

Построить иерархию объектов. Последовательно отобразить объекты, сдвинуть, изменить размеры, спрятать.
Варианты заданий:
1. Координаты - точка - окружность - дуга (процедура Arc).

заранее спасибо!

Обсуждение

давно
Профессор
399103
482
24.09.2013, 16:08
общий
24.09.2013, 16:23
Что понимается под иерархией объектов? Система классов, связанных друг с другом наследованием? Т.к. она в данном случае будет неестественой и высосанной из пальца при любом построении, желается ли какая-то конкретная? Что имеется в виду под "отобразить"? В связи с чем, кстати, вопрос, в какой среде подразумевается выполнение(графический режим -- не вывод в консоль -- в стандарт языка не входит)?
Неизвестный
24.09.2013, 21:20
общий
да именно система классов, связанных друг с другом наследованием. надо высасывать из пальца
Отобразить значит вывести на экран,
давно
Профессор
399103
482
25.09.2013, 03:42
общий
это ответ
Здравствуйте, Dima Fedorov!

Код:

#include <graphics.h>
#include <conio.h>
#include <stdio.h>

class Coord
{
public:
int x;
int y;
int vis;

Coord(int x = 0, int y = 0);
virtual void draw() = 0;
};

Coord::Coord(int _x, int _y)
: x(_x)
, y(_y)
, vis(1)
{
}

class Point : public Coord
{
public:
Point(int x = 0, int y = 0);
virtual void draw();
};

Point::Point(int x, int y)
: Coord(x, y)
{
}

void Point::draw()
{
if (vis)
putpixel(x, y, WHITE);
}

class Circle : public Coord
{
public:
int r;

Circle(int x = 0, int y = 0, int r = 0);
virtual void draw();
};

Circle::Circle(int _x, int _y, int _r)
: Coord(_x, _y)
, r(_r)
{
}

void Circle::draw()
{
if (vis)
circle(x, y, r);
}

class Arc : public Circle
{
public:
int sa;
int ea;

Arc(int x = 0, int y = 0, int r = 0, int sa = 0, int ea = 0);
virtual void draw();
};

Arc::Arc(int x, int y, int r, int _sa, int _ea)
: Circle(x, y, r)
, sa(_sa)
, ea(_ea)
{
}

void Arc::draw()
{
if (vis)
arc(x, y, sa, ea, r);
}

int main()
{
int gd = DETECT;
int gm;

initgraph(&gd, &gm, "../bgi");

Point p(50, 50);
Circle c(100, 50, 25);
Arc a(200, 35, 25, 0, 100);

p.draw();
c.draw();
a.draw();
getch();
cleardevice();

p.x = 100;
c.r = 50;
a.vis = 0;
p.draw();
c.draw();
a.draw();
getch();

closegraph();
restorecrtmode();
return 0;
}
Форма ответа