Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
PAGE 4
Лабораторна робота №9
Тема:Створення віртуальних функцій.
Мета : Навчитись використовувати вiртуальнi функції у програмах.
Завдання:
Створити абстрактний клас для роботи з геометричною фігурою типу «пряма» на екрані. Передбачити такі функціїметоди: показати фігуру на екрані; зробити фігуру невидною (знищити її зображення); повернути фігуру на заданий кут (кут надається у градусах); пересунути фігуру на наданий вектор. Створити похідний клас для роботи з фігурою типу «пряма». Визначити інтерфейсну частину у класах.
Код програми:
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <graphics.h>
#include <dos.h>
#include <math.h>
class Pryamay
{
int x1,x2,y1,y2;
int X,Y,r1,r2,k1,k2,W1,W2,Z1,Z2,a;
public:
virtual void Vvod ();
virtual void Delete ();
virtual void Sdvig ();
virtual void Povorot ();
};
class Proiz : public Pryamay
{ // int x1,x2,y1,y2,X,Y,r1,r2,k1,k2,W1,W2,Z1,Z2,a;
public:
void Vvod ();
void Delete ();
void Sdvig ();
void Povorot ();
};
int main ()
{
Pryamay A;
char reg;
for (;;)
{
do
{
//clrscr ();
cout<<"\n MENU "<<endl;
cout<<" 1 - Narisovat' pryamyuy"<<endl;
cout<<" 2 - Ydalit'"<<endl;
cout<<" 3 - Sdvinyt'"<<endl;
cout<<" 4 - Povorot"<<endl;
cout<<" 5 - vihod"<<endl;
cout<<"\n Vibereti punkt menu: ";
cin>>reg;
}
while(reg!='1' && reg!='2' && reg!='3' && reg!='4' && reg!='5');
switch(reg)
{
case '1': A.Vvod(); break;
case '2': A.Delete(); break;
case '3': A.Sdvig(); break;
case '4': A.Povorot(); break;
case '5': exit(0); break;
}
}
getch ();
return 0;
}
void Pryamay :: Vvod()
{
int gdriver = DETECT,gmode,errorcode;
initgraph(&gdriver,&gmode," ");
errorcode = graphresult();
if(errorcode!= grOk)
{
cout<<"oshibka" <<grapherrormsg(errorcode);
cout<< "\npress ani Key";
getch();
exit(1);
}
cout << "Vvedite coordinati\n:";
cin >> x1;
cin >>y1;
cin >>x2;
cin >>y2;
setcolor (GREEN);
line (x1,y1,x2,y2);
getch();
// closegraph();
}
void Pryamay :: Delete()
{
int gdriver = DETECT,gmode,errorcode;
initgraph(&gdriver,&gmode," ");
errorcode = graphresult();
if(errorcode!= grOk)
{
cout<<"oshibka" <<grapherrormsg(errorcode);
cout<< "\npress ani Key";
getch();
exit(1);
}
setfillstyle (EMPTY_FILL, BLACK);
getch();
// closegraph();
}
void Pryamay :: Sdvig ()
{
int gdriver = DETECT,gmode,errorcode;
initgraph(&gdriver,&gmode," ");
errorcode = graphresult();
if(errorcode!= grOk)
{
cout<<"oshibka" <<grapherrormsg(errorcode);
cout<< "\npress ani Key";
getch();
exit(1);
}
cout << "Vvedite coordinati\n:";
cin >> x1;
cin >>y1;
cin >>x2;
cin >>y2;
setcolor (GREEN);
line (x1,y1,x2,y2);
cout <<"Vvedite vector ";
cin >>X;
cin >>Y;
r1=x1+X;
r2=x2+X;
k1=y1+Y;
k2=y2+Y;
setcolor (GREEN);
line (r1,k1,r2,k2);
getch();
// closegraph();
}
void Pryamay :: Povorot ()
{
//float w1,w2,z1,z2;
int gdriver = DETECT,gmode,errorcode;
initgraph(&gdriver,&gmode," ");
errorcode = graphresult();
if(errorcode!= grOk)
{
cout<<"oshibka" <<grapherrormsg(errorcode);
cout<< "\npress ani Key";
getch();
exit(1);
}
cout << "Vvedite coordinati\n:";
cin >> x1;
cin >>y1;
cin >>x2;
cin >>y2;
setcolor (GREEN);
line (x1,y1,x2,y2);
cout <<"Vvedite ygol ";
cin >> a;
/* w1=x1*cos(a)-y1*sin(a);
w2=x2*cos(a)-y2*sin(a);
z1=x1*sin(a)+y1*cos(a);
z2=x2*sin(a)+y2*cos(a); */
if (a==45)
{
Z2=(x2+x1)-y1;
clrscr ();
line (x1,y1,x2,Z2);
}
if (a==90)
{ Z2= x2+x1;
clrscr ();
line (x1,y1,x1,Z2);
}
if (a==180)
{
W2=x1+x2;
clrscr ();
line (W2,y1,x1,y1);
}
getch();
// closegraph();
}