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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
AlexPhenomenon
0 / 0 / 0
Регистрация: 03.09.2013
Сообщений: 2
#1

Создать абстрактный класс фигур и сделать 2 наследника (треугольник, прямоугольник) - C++

20.11.2013, 23:40. Просмотров 670. Ответов 2
Метки нет (Все метки)

Доброго времени суток. Задание такое : создать абстрактный класс фигур и сделать 2 наследника( треугольник, прямоугольник) и сделать метод, который определяет пересекаются ли эти фигуры или же нет. Прогу вроде написал (не уверен в правильности), но студия всё же находит ошибку при компиляции, прошу помощи у умнейших и не очень программистов этого форума


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
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <math.h>
using namespace std;
struct point
{
       float x;
       float y;
};
 
class Figure
{
      protected:
      point* a;
      int n;
      Figure(void) {n=0;};
      Figure(const int &k) {n=k; a=new point [n]; for(int i=0;i<n;i++) {a[i].x=0; a[i].y=0;}};
      public:
      virtual float sqr(void) = 0;
      void print();
      void move();
      point getpoint(int);
      virtual void read()=0;
      ~Figure() {delete []a; n=0;};
};
class Triangle : public Figure
{
      public:
      Triangle(void):Figure(3) {};
      void read();
      float sqr();  
};
class Rect : public Figure
{
      public:
      Rect(void):Figure(4) {};
      void read();
      float sqr();      
};
bool prov(point p0,point p1,point p2,point p3)
{
     float a1,a2,b1,b2,c1,c2,x,y;
     a1=p1.x-p0.x;
     a2=p1.y-p0.y;
     b1=p2.x-p3.x;
     b2=p2.y-p3.y;
     c1=p2.x-p0.x;
     c2=p2.y-p0.y;
     const double eps=0.0001;
     if(fabs(a1*b2-b1*a2)<eps) return false;
     else
     {
         x=(c1*b2-c2*b1)/(a1*b2-a2*b1);
         y=(a1*c1-a2*c1)/(b2*a1-b1*a2);         
     }
     if (((x+eps)>0)&&((x-eps)<1)&&((y+eps)>0)&&((y-eps)<1)) return true;
     else return false;
}
bool IsIntersect(Figure* f1,Figure* f2){
 
bool a=false;
     int m,l;
     point tr[3],kv[4];
     for(int i=0;i<3;i++)
     tr[i]=f1->getpoint(i);
     kv[0]=f1->getpoint(0);
     kv[2]=f1->getpoint(1);
     kv[1].x=kv[0].x;
     kv[1].y=kv[2].y;
     kv[3].x=kv[2].x;
     kv[3].y=kv[0].y;
     for(int i=0;i<3;i++)  
      for(int j=0;j<4;j++)
      {
              if (i=2) m=0; else m=i+1;
              if (j=3) l=0; else l=j+1;
              if (prov(tr[i],tr[m],kv[j],kv[l])) {a=true; break;}
      }
     return a;
}
 
 
void main()
{
     Figure *f1,*f2;
      f1=new Triangle;
      f2=new Rect;
      cout<<("Vvedite koordinaty treugol'nika")<<endl; f1->read();
      cout<<("Vvedite koordinaty pryamougol'nika")<<endl; f2->read();
      cout<< IsIntersect(f1,f2) <<endl;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2013, 23:40     Создать абстрактный класс фигур и сделать 2 наследника (треугольник, прямоугольник)
Посмотрите здесь:

Абстрактный класс, удаление наследника из std::vector<T> - C++
При удалении через итератор выбивает ошибку в ходе выполнения программы. Имеется абстрактный класс: class Fruit : public...

Создать абстрактный класс - C++
И вот ещё одно.... ))) Тоже очень надо на завтра..... Это всё одно задание..... =) пожалуйста... :-[ Создать абстрактный...

Создать абстрактный класс CVehicle - C++
Здравствуйте, товарищи! Задали задачу, не понимаю условие. Создать абстрактный класс CVehicle. На его основе реализовать классы...

Создать абстрактный класс Integer - C++
Создать абстрактный базовый класс Integer (целое) с виртуальными арифметическими операциями и функцией вывода на экран. Определить...

Создать абстрактный класс Vehicle - C++
Создать абстрактный класс Vehicle (транспортное средство). На его основе реализовать классы Plane (самолет), Саг (автомобиль) и Ship...

Создать абстрактный класс - млекопитающие - C++
Помогите пожалуйста с задачей! задача: на языке с++ Создать абстрактный класс -млекопитающие. Определить производные классы -...

Создать список, содержащий абстрактный класс - C++
#include &lt;list&gt; #include &lt;iostream&gt; using namespace std; class CGraphicsObject { public: virtual double area() const =...

Срочно. Ребята выручайте. (Создать абстрактный класс) - C++
1) Создать абстрактный класс Издание с методами позволяющим вывести на экран информацию об издании, а также определить является ли данное...

Создать абстрактный базовый класс с виртуальной функцией - C++
Создать абстрактный базовый класс с виртуальной функцией – значением функций в заданной точке. Создать производные классы: класс степенных...

Создать абстрактный класс A, который включает в себя: - C++
Помогите решить, пожалуйста. Спасибо. Создать абстрактный класс A, который включает в себя: два вещественных числа; конструктор с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ABKA
7 / 7 / 0
Регистрация: 06.11.2013
Сообщений: 50
21.11.2013, 00:00     Создать абстрактный класс фигур и сделать 2 наследника (треугольник, прямоугольник) #2
1. Вместо void main() нужно int main().
2.
if (i=2) m=0; else m=i+1;
if (j=3) l=0; else l=j+1; Тут вместо сравнения почему-то присваивание.
AlexPhenomenon
0 / 0 / 0
Регистрация: 03.09.2013
Сообщений: 2
21.11.2013, 01:57  [ТС]     Создать абстрактный класс фигур и сделать 2 наследника (треугольник, прямоугольник) #3
Всё верно, спасибо за корректировку, но ошибку всё равно находит :c

Добавлено через 1 час 27 минут
студия показывает ошибку где-то здесь
class Triangle : public Figure
class Rect : public Figure
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru