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

иерархия геометрических фигур в ООП - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Умножение матрицы на вектор http://www.cyberforum.ru/cpp-beginners/thread51921.html
#include <stdio.h> #include <conio.h> #include <stdlib.h> #include <math.h> typedef matrix; typedef vector; matrix a={{3,5,1}, {4,8,6}, {2,7,9}}; vector x={9,5,7};
C++ Вычислить сумму по формуле Нужно с программировать программу в С++, по теме рекурсии... Задача такова: Дано натуральное n (в радианах) нужно сделать так чтобы она находила сумму по формуле: cos1*(cos1+cos2)*(cos1+cos2+cos3)*(cos1+cos2+...+cos(n))... ПОЖАЛУЙСТА ПОМОГИТЕ!!! ЗАРАНЕЕ БЛАГОДАРЕН!!! http://www.cyberforum.ru/cpp-beginners/thread51908.html
Обсуждение своих программ C++
Ув.Программисты, решил открыть темку,где можно продемонстрировать свою прогу,обсуждать ее коды:):)Буду рад ваших ответов:):) Добавлено через 3 минуты Это моя программа, которую сегодня написал.Тут внедрен бесконечный цикл, во время этого цикла, переменная sec увеличивается на 1 за каждую секунду:)Вобщем очередная программа нуба:D #include "stdio.h" #include "stdlib.h" #include "conio.h"...
C++ system("cls"); как по другому?
имеется код #include "stdio.h" #include "stdlib.h" #include "conio.h" #include "windows.h" #include <iostream> using namespace std;
C++ Задача:Удалить строчки http://www.cyberforum.ru/cpp-beginners/thread51895.html
в КиР наткнулся на задачу: напишите программу удаления из "С"-пораммы всех комментариев. Не забывайте аккуратно обращаться с "закавыченнными" строками константами как понял - надо редактировать срр файл...но как я знаю удалить строчки из файла невозможно!как это можно реализовать?
C++ Как работать с пользовательскими полями в документах OpenOffice.org Writer, используя С++? Очень нужна помощь в следующем вопросе: как работать с пользовательскими полями в документах OpenOffice.org Writer, используя С++? Предыстория: есть документы, у них есть реквизиты (скажем, дата создания, автор, наименование и проч.), которые хранятся в xml. Значения таких реквизитов могут меняться, и для поддержания актуальности документов нужно в текст документа вставлять не значения... подробнее

Показать сообщение отдельно
Дрюня
0 / 0 / 0
Регистрация: 11.05.2009
Сообщений: 30

иерархия геометрических фигур в ООП - C++

22.09.2009, 00:14. Просмотров 3100. Ответов 12
Метки (Все метки)

Здравствуйте уважаемые формучани, нужна ваша помощь ибо я уже не знаю что делать. В общем задание построить иерархию геометрических фигур методом наследования( с этим проблем не возникло), и каждая из фигур должна выполнять свои действия по сигналу с клавиатуры. У меня идет точка которая двигается и меняет цвет, квадрат который выполняет эти же действия, прямоугольник который в придачу ещё и меняет размер и ромб который выполняет все предыдущие условия. Так вот проблема в том что у квадрата и прямоугольника не так как надо выполняется движение объекта, вместо всей фигуры двигается только часть, а одна точка остается зафиксированной на месте. Я понимаю что для такого движения надо задать функцию например Move которая будет двигать крайних точки в диагоналях моих элементов, но получается реализовать только с одной точкой. А напротив, ромб который я задавал не через rectangle а описал обычными линиями отлично двигается но не меняет размер. Посмотрите пожалуйста что тут можно сделать. Ниже даю код проги.
C++
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
#include <GRAPHICS.H>
#include <conio.h>
#include <stdio.h>
#include <dos.h>
#include <stdlib.h>
 
 
//*********************************************************************************************************************
class TShape
{
protected:
int x1, y1, color;
public:
    TShape(int ix1, int iy1, int icolor);
    ~TShape();
    virtual void Draw(int c)=0;
    void Show();
    void Hide();
    void changecolor(int c);
    void Move(int dx, int dy);
    void Size(int dx, int dy);
 
};
 
//-------------------------------------------
TShape::TShape(int ix1, int iy1, int icolor)
{
    x1 = ix1;
    y1 = iy1;
    color = icolor;
 
};
 
 
//---------------------------------------------
TShape::~TShape()
{
};
 
//-------------------------------------------
void TShape::Show()
{
 
    Draw(color);
}
 
//--------------------------------------------
void TShape::Hide()
{
setfillstyle(1,0);
    Draw(BLACK);
};
//--------------------------------------------
void TShape::Move(int dx, int dy)
{
    Hide();
    x1+=dx;
    y1+=dy;
        Show();
 
};
void TShape::Size(int dx, int dy)
{
Hide();
x1=x1-5;
dx=dx+5;
dy=dy+5;
y1=y1-5;
Show();
};
void TShape::changecolor(int c)
{
    color=c;
    Draw(color);
}
 
 
//*************************************************************************************************************************
class TPoint : public TShape
{
public:
    TPoint(int ix1, int iy1, int icolor);
    void Draw(int c);
};
//---------------------------------------------
 
TPoint::TPoint(int ix1, int iy1, int icolor):TShape(ix1, iy1, icolor)
{
};
 
//----------------------------------------------
void TPoint::Draw(int c)
{
  putpixel(x1, y1, c);
};
 
//************************************************************************************************************************
class T10Points : public TPoint
{
public:
    T10Points(int ix1, int iy1, int ia, int icolor);
    void Draw(int c);
    void changecolor(int c);
    int a;
};
//-----------------------------------------------------------
T10Points::T10Points(int ix1, int iy1, int ia, int icolor):TPoint(ix1, iy1, icolor)
{
    a=ia;
};
//------------------------------------------------------------
void T10Points::Draw(int c)
{
int i,j;
    for(i=0;i<5;i++)
    for(j=0;j<2;j++)
    putpixel(x1+i*a,y1+j*a,c);
};
 
//************************************************************************************************************************
class TKvadr : public TPoint
{
protected:
int x2, y2;
public:
    int dx1,dy1,dx2,dy2;
    TKvadr(int ix1, int iy1, int ix2, int iy2, int icolor);
    void Draw(int c);
    void changecolor(int c);
};
 
//-----------------------------------------------------------------------------------------------
TKvadr::TKvadr(int ix1, int iy1, int ix2, int iy2, int icolor):TPoint(ix1, iy1, icolor)
{
x1=ix1;
y1=iy1;
x2=ix2;
y2=iy2;
x1=y1;
x2=y2;
}
void TKvadr::Draw  (int c){
setcolor(c);
rectangle (x1,y1,x2,y2);
}
void TKvadr::changecolor(int c)
{
    color=c;
    Draw(color);
}
 
 
//*************************************************************************************************************************
class TRect : public TKvadr
{
public:
    TRect(int ix1, int iy1, int ix2, int iy2, int icolor);
    void Draw(int c);
 
};
//-----------------------------------------------------------
TRect::TRect(int ix1, int iy1, int ix2, int iy2, int icolor):TKvadr(ix1, iy1, ix2, iy2, icolor){
x2 = ix2;
y2 = iy2;
}
void TRect::Draw  (int c){
setcolor(c);
rectangle (x1,y1,x2,y2);
};
 
//*************************************************************************************************************************
class TRomb : public TShape
{
public:
    TRomb(int ix1, int iy1,int ia, int icolor);
    void Draw(int c);
    int a;
};
//-----------------------------------------------------------
TRomb::TRomb(int ix1, int iy1,int ia, int icolor):TShape(ix1, iy1, icolor)
{
    a=ia;
};
//------------------------------------------------------------
void TRomb::Draw(int c)
{
    setcolor(c);
    line(x1+a+a,y1+a+a,x1+a,y1+a);
    line(x1+a,y1+a,x1+a+a,y1+a-a);
    line(x1+a+a,y1+a-a,x1+a+a+a,y1+a-a+a);
    line(x1+a+a+a,y1+a-a+a,x1+a+a,y1+a+a);
};
 
//**************************************************************************************************************************
 
 
int main()
{
    int dr=9,gm=2;
    initgraph(&dr, &gm, "D:\\Andrey\\BorlandC\\BGI");
    char ch;
    TShape *A[5];
    A[0]= new TPoint(200, 200, 3);
    A[1]= new TKvadr(320, 240, 400, 300, 13);
    A[2]= new TRect(320, 240, 400, 300, 13);
    A[3]= new TRomb(320, 240, 40, 13);
    A[4] = new T10Points(320, 240, 40, 13);
    int t=0,i;
    while(1)
    {
        ch=getch(); //вихід
        if(ch=='q')
        {
            break;
        }
        if(ch=='p') //показати точкy
        {
            A[t]->Hide();
                t=0;
                A[0]->Show();
 
        }
        if(ch=='h') //сховати поточну фігугу
        {
            A[t]->Hide();
 
        }
        if(ch=='k') //показати квадрат
        {
            A[t]->Hide();
            t=1;
            A[t]->Show();
        }
        if(ch=='r') //показати прямокутник
        {
            A[t]->Hide();
            t=2;
            A[t]->Show();
        }
        if(ch=='g') //показати ромб
        {
            A[t]->Hide();
            t=3;
            A[t]->Show();
        }
                                if(ch=='t')//показати 10 точок
                                {
                                               A[t]->Hide();
                                               t=4;
                                               A[t]->Show();
                                }
        if(ch=='8') //рух вгору для поточної фігури
        {
            A[t]->Move(0,-5);
        }
        if(ch=='2') //рух вниз для поточної фігури
        {
            A[t]->Move(0,5);
        }
        if(ch=='4') //рух вліво для поточної фігури
        {
            A[t]->Move(-5,0);
        }
        if(ch=='6') //рух вправо для поточної фігури
        {
            A[t]->Move(5,0);
        }
        if(ch=='c') //змінити колір поточної фігури
        {
            A[t]->changecolor(random(15));
        }
        if(ch=='b')
        {
          A[t]->Size(0,0);
        }
    }
 
    closegraph();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru