 |
Пожалуйста помогите с заданием... |
 |
10.08.2007, 21:56
|
#1
|
|
Младенец
Join Date: 08 2007
Location: mariupol
Posts: 3
Rep Power: 0
|
Пожалуйста помогите с заданием...
Пожалуста помогите разобраться. Я только только начал изучать С++ и нас уже нагружают такими задачами. Я разобрался только с простейшими консольными приложениями в классах плохо разбираюсь, точнее ни как. Работаю в Visual C++ 6.
Спасибо всем.
Создать базовый класс Picture, который содержит информацию о примитиве векторной графики (координаты xl,yl, x2,y2 ограничивающего прямоугольника, в котором будет рисоваться фигура; функцию Scale(...), рисующую примитив). На основе базового класса создать классы Reet. Ell. Line, которые рисуют соответственно прямоугольник, эллипс и линию. В основной программе создать массив элементов и с помощью клавиатуры управлять масштабом изображения. Доступ ко всем полям класса организовать только через методы класса.
|
|
|
|
 |
|
 |
10.08.2007, 23:18
|
#2
|
|
Ego coder
Join Date: 07 2004
Location: Yerevan, Armenia
Age: 45
Posts: 3,738
Rep Power: 5
|
Code:
class Picture {
protected:
int x1, y1, x2, y2;
public:
Picture(int a=0, int b=0, int c=200, int d=200) : x1(a), y1(b), x2(c), y2(d){}
virtual void Draw(HDC) = 0;
void SetBounds(int a, int b, int c, int d) {x1=a; y1=b; x2=c; y2=d;}
void GetBounds(int& a, int& b, int& c, int& d) const {a=x1; b=y1; c=x2; d=y2;}
virtual ~Picture() {}
};
class Ellipse : public Picture {
public:
Ellipse(int a, int b, int c, int d) : Picture(a, b, c, d) {}
void Draw(HDC hdc) {::Ellipse(hdc, a, b, c, d);}
};
class Rect : public Picture {
public:
Rect(int a, int b, int c, int d) : Picture(a, b, c, d) {}
void Draw(HDC hdc) {::Rectangle(hdc, x1, y1, x2, y2);}
};
class Line : public Picture {
public:
Line(int a, int b, int c, int d) : Picture(a, b, c, d) {}
void Draw(HDC hdc) {::MoveTo(hdc, x1, y1); ::LineTo(hdc, x2, y2);}
};
class Engine {
std::vector<Picture*> shapes;
public:
void ReDraw(HDC hdc) {std::for_each(shapes.begin(), shapes.end(), std::bind2nd(std::mem_fun(&Picture::Draw), hdc);}
void AddShape(int a, int b, int c, int d) {
switch(rand()%3) {
case 0: shapes.push_back(new Ellipse(a, b, c, d)); break;
case 1: shapes.push_back(new Rect(a, b, c, d)); break;
case 2: shapes.push_back(new Line(a, b, c, d)); break;
}
}
};
Вобщем тут естественно не вся реализация, я попробовал в общих чертах описать механизм, думаю полезнее будет почитать о программировании в среде виндовс и С++ чтоб суметь окончательно справиться с задачей, а так по ходу дела будут конкретные вопросы - можно уже задавать на форуме.
Last edited by AvDav; 10.08.2007 at 23:28.
|
|
|
|
 |
11.08.2007, 07:04
|
#3
|
|
Грустно...
Join Date: 08 2002
Location: Там, где всегда идут дожди
Age: 44
Posts: 21,717
Rep Power: 9
|
Ва Давид, какой позор... почему координаты протектед? Они должны быть приватными, а доступ к ним осуществлять через протектед мембер функшн.
Кроме того, условие явно некорректно передано, так как суть задачи, судя по именам функций является маштабирование, чего не решено
Зачем учиться, если нету возможности решить элементарную задачу?
|
|
|
|
11.08.2007, 15:27
|
#4
|
|
Ego coder
Join Date: 07 2004
Location: Yerevan, Armenia
Age: 45
Posts: 3,738
Rep Power: 5
|
Мог бы еще к ГДИ придраться, типа откуда знаем что не на консоли рисуем
|
|
|
|
17.08.2007, 21:59
|
#5
|
|
Младенец
Join Date: 08 2007
Location: mariupol
Posts: 3
Rep Power: 0
|
Спасибо за помощь, попробую разобраться.
А к тому, зачем учиться если не получаются простые задачи объясню: Учусь заочно в филиале ХНУРЭ, по програмированию (как и по другим предметам) одна лекция 45 мин. за пол-года, преподы приезжают в наш город только на сессию, спросить не у кого, книг прикупил, а толку? учусь благодаря таким как вы , спрашиваю, а потом разбираюсь тогда хоть что-то ясно становится. Еще раз спасибо.
Посоветуйте пожалуйста толковую книгу для совершенно самостоятельного изучения С++.
Last edited by valmer; 17.08.2007 at 22:09.
|
|
|
|
17.08.2007, 22:34
|
#6
|
|
Какое небо, *, Багдад!
Join Date: 10 2005
Location: Ереван
Posts: 1,682
Rep Power: 5
|
Quote:
Originally Posted by valmer
Посоветуйте пожалуйста толковую книгу для совершенно самостоятельного изучения С++.
|
Страуструп, "Язык программирования C++", из первых рук, так сказать.
|
|
|
|
17.08.2007, 22:40
|
#7
|
|
Ego coder
Join Date: 07 2004
Location: Yerevan, Armenia
Age: 45
Posts: 3,738
Rep Power: 5
|
Эффективное программирование на С++, Эндрю Кениг и Барбара Му.
Язык программирования С++, Бьерн Страуструп.
www.rsdn.ru
|
|
|
|
19.08.2007, 05:17
|
#8
|
|
Младенец
Join Date: 08 2007
Location: mariupol
Posts: 3
Rep Power: 0
|
Спасибо огромное, буду искать.
|
|
|
|
|
All times are GMT. The time now is 14:22. |
|
|