Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2011, 17:50   #1
МихаилБ
Пользователь
 
Регистрация: 25.06.2011
Сообщений: 11
По умолчанию Ошибка при создании класса, описывающего графический объект (графика в Borland C)

Помогите пожалуйста, завтра последний срок сдачи
мне нужно запустить код через этот компилятор
http://letitbit.net/download/04b2079269/cpp.rar.html
классы описаны правильно, не могу исправить ошибку в теле программы

Код:
#include <iostream.h>
#include <graphics.h>
#include <conio.h>
class point
{
int xi, yi, col;
public:
point (int x,int y,int cv)
{xi=x; yi=y; col=cv;}

void draw()
{putpixel(xi,yi,col);}

void hide()
{putpixel(xi,yi, getbkcolor());}

int back()
{return xi; return yi; return col;}

void chge(int x,int y,int cv)
{xi=x; yi=y; col=cv;}

void fly()
{ int key;
while(key!=0){ cout<<"1234 storoni i 0 vihod";
cin>>key;
switch (key){
case 1: for (int i=0;i<10;i++) {hide(); xi=xi+20; draw(); getch();}break;
case 2: for (i=0;i<10;i++) {hide(); xi=xi-20; draw(); getch();}break;
case 3: for (i=0;i<10;i++) {hide(); yi=yi+20; draw(); getch();}break;
case 4: for (i=0;i<10;i++) {hide(); yi=yi-20; draw(); getch();}break;
default: cout<<"vihod";break;
} }
;}

};

class otrz
{public:
int xj1, yj1, xj2, yj2, cl;
public:

otrz (int x1, int y1, int x2, int y2, int sv)
{xj1=x1; yj1=y2; xj2=x2; yj2=y2; cl=sv;}

void drawotrz()
{line (xj1, yj1, xj2, yj2);}

void hideotrz()
{setcolor(getbkcolor());line (xj1, yj1, xj2, yj2);setcolor(WHITE);}

int backotrz()
{return xj1; return yj1; return xj2; return yj2; return cl;}

void chgeotrz(int x1, int y1, int x2, int y2, int sv)
{xj1=x1; yj1=y2; xj2=x2; yj2=y2; cl=sv;}

void flyotrz()
{
int key;
while(key!=0){ cout<<"1234 storoni i 0 vihod";
cin>>key;
switch (key){
case 1: for (int i=0;i<10;i++) {hideotrz(); xj1=xj1+20; xj2=xj2+20; drawotrz(); getch();}break;
case 2: for (i=0;i<10;i++) {hideotrz(); xj1=xj1-20; xj2=xj2-20; drawotrz(); getch();}break;
case 3: for (i=0;i<10;i++) {hideotrz(); yj1=yj1+20; yj2=yj2+20; drawotrz(); getch();}break;
case 4: for (i=0;i<10;i++) {hideotrz(); yj1=yj1-20; yj2=yj2-20; drawotrz(); getch();}break;
default: cout<<"vihod";break;
} }
;}

};

class vpisokr: public otrz
{public:
vpisokr (int x1, int y1, int x2, int y2, int sv, int p): otrz(x1, y1, x2, y2, sv)
{cout<<"sozdano";};

void draw() {
otrz::drawotrz(); int d=xj2-xj1;
line(xj1,yj1,xj1,yj1+d);
line(xj1,yj1+d, xj2, yj1+d);
line(xj2,yj1+d, xj2, yj2);
circle(xj2-d/2, yj2+d/2,d/2);

}

void hide() {
setcolor(getbkcolor()); draw(); setcolor(WHITE);
}

void fly()
{
int key;
while(key!=0){ cout<<"1234 storoni i 0 vihod";
cin>>key;
switch (key){
case 1: for (int i=0;i<10;i++) {hide(); xj1=xj1+20; xj2=xj2+20; draw(); getch();}break;
case 2: for (i=0;i<10;i++) {hide(); xj1=xj1-20; xj2=xj2-20; draw(); getch();}break;
case 3: for (i=0;i<10;i++) {hide(); yj1=yj1+20; yj2=yj2+20; draw(); getch();}break;
case 4: for (i=0;i<10;i++) {hide(); yj1=yj1-20; yj2=yj2-20; draw(); getch();}break;
default: cout<<"vihod";break;
} }
;}

void razmer()
{float y;
cout<<"vvedite koeficient:"<<endl; cin>>y;
xj2=xj2+((xj2-xj1)*y); draw();

}

vpisokr sozd()
{int op; cout<<"dlinna"; cin>>op; vpisokr a(100, 200, op, 200,3,4); return a;}

~vpisokr()
{cout<<"razrushen";}

};

void main()
{int k;
vpisokr a(100,200,300,200,3,4);
int gm, gd = DETECT;
initgraph (&gm, &gd, "C:\\BORLANDC\\bgi");
cout<<"1 sozdanie"<<endl;
cout<<"2 risovanie"<<endl;
cout<<"3 gashenie"<<endl;
cout<<"4 peremechenie"<<endl;
cout<<"5 izmenenie razmera"<<endl;
cout<<"0 vihod"<<endl;
while (k!=0)
{line(20,20,400,400);
cin>>k;
switch (k)
{
case 1: {break;}
case 2: {a.draw();break;}
case 4:{a.fly();break;}
case 3: {a.hide();break;}
case 5: {a.razmer();break;}
}

}


}
Заранее спасибо


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 30.06.2011 в 20:31.
МихаилБ вне форума Ответить с цитированием
Старый 30.06.2011, 18:18   #2
Nedward
Пользователь
 
Регистрация: 26.06.2011
Сообщений: 85
По умолчанию

Ммда... вторая же строчка
Код:
#include <graphics.h>
А точнее ответ гугла на вопрос "что за graphics.h" отбили все желание в этом разбираться. Эхх, когда же студентам на информатике перестанут рассказывать про MS-DOS и компьютеры размером с комнату. А самое главное - когда перестанут учить программировать для систем, которые считались устаревшими еще до их рождения
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете. (c) Martin Golding
Nedward вне форума Ответить с цитированием
Старый 30.06.2011, 19:33   #3
МихаилБ
Пользователь
 
Регистрация: 25.06.2011
Сообщений: 11
По умолчанию

для Vova777
ошибка здесь
Код:
void main()
{int k;
vpisokr a(100,200,300,200,3,4);
int gm, gd = DETECT;
initgraph (&gm, &gd, "C:\\BORLANDC\\bgi");
cout<<"1 sozdanie"<<endl;
cout<<"2 risovanie"<<endl;
cout<<"3 gashenie"<<endl;
cout<<"4 peremechenie"<<endl;
cout<<"5 izmenenie razmera"<<endl;
cout<<"0 vihod"<<endl;
while (k!=0)
{line(20,20,400,400);
cin>>k;
switch (k)
{
case 1: {break;}
case 2: {a.draw();break;}
case 4:{a.fly();break;}
case 3: {a.hide();break;}
case 5: {a.razmer();break;}
}

}

}
предположительно в этой строке
initgraph (&gm, &gd, "C:\\BORLANDC\\bgi");


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 30.06.2011 в 20:32.
МихаилБ вне форума Ответить с цитированием
Старый 30.06.2011, 19:37   #4
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

МихаилБ

Используйте тэг CODE - это кнопка с изображением решётки #. В этом случае ваш текст будет легче читаться.
Вадим Мошев вне форума Ответить с цитированием
Старый 30.06.2011, 20:25   #5
МихаилБ
Пользователь
 
Регистрация: 25.06.2011
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
МихаилБ

Используйте тэг CODE - это кнопка с изображением решётки #. В этом случае ваш текст будет легче читаться.
где именно его использовать?
МихаилБ вне форума Ответить с цитированием
Старый 30.06.2011, 20:27   #6
Vova777
Уважаемый
Форумчанин
 
Аватар для Vova777
 
Регистрация: 04.07.2010
Сообщений: 318
По умолчанию

Цитата:
Сообщение от МихаилБ Посмотреть сообщение
где именно его использовать?
когда сообщение пишите, есть кнопка "#", нажмите ее, там между [...] и [...] свой код вставите.
даешь высокое напряжение
Vova777 вне форума Ответить с цитированием
Старый 30.06.2011, 20:42   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

проверьте параметры в InitGraph()
вроде бы там сначала был GraphDriver, потом GraphMode
и вообще, можно попробовать так:
Код:
int gm = 0, gd = 0;
initgraph (&gd, &gm, "C:\\BORLANDC\\bgi");
2) проверьте, есть ли у ВАс на диске C: каталог BGI
и есть ли там файлы с расширением BGI (в первую очередь EGAVGA.BGI)

3) не совсем разбираюсь в хитросплетениях ООП в C
но почему Вы объект a класса vpisokr создаёте ДО иницилизации графики?! Это как логично делать как минимум после (а как максимум после выбора 1-го пункта из меню!)

я бы вообще рекомендовал иницилизировать графику так, как показано ТУТ
Цитата:
Код:
void GraphInit()
 {
 int gdriver = DETECT, gmode, errorcode;
 initgraph(&gdriver, &gmode, "");
 errorcode = graphresult();
 if (errorcode != grOk)
  {
  printf("Graphics error: %s\n", grapherrormsg(errorcode));
  printf("Press any key to halt:");
  getch();
  exit(1);
  }
 }

Последний раз редактировалось Serge_Bliznykov; 30.06.2011 в 20:44.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.06.2011, 22:39   #8
МихаилБ
Пользователь
 
Регистрация: 25.06.2011
Сообщений: 11
По умолчанию

спасибо, я попробую
МихаилБ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение типа класса по переменной на объект этого класса при компиляции phomm Общие вопросы Delphi 24 08.04.2011 14:11
Шаблоны - нужно создать объект класса abc в котором вместо aa использовался бы объект класса fff? Farrel Общие вопросы C/C++ 2 13.11.2010 17:37
Проблемма при создании класса Warnes Помощь студентам 7 07.05.2009 23:50
При создании нескольких экземпляров класса приложение зависает Mixasik Общие вопросы C/C++ 1 25.04.2009 13:25
ошибка в создании класса juden Общие вопросы C/C++ 2 17.05.2008 15:04