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

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

Восстановить пароль Регистрация
 
AlexPhenomenon
0 / 0 / 0
Регистрация: 03.09.2013
Сообщений: 2
20.11.2013, 23:40     Создать абстрактный класс фигур и сделать 2 наследника (треугольник, прямоугольник) #1
Доброго времени суток. Задание такое : создать абстрактный класс фигур и сделать 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 наследника (треугольник, прямоугольник)
Посмотрите здесь:

Создать абстрактный класс C++
Создать абстрактный класс - млекопитающие C++
Создать абстрактный базовый класс объектов на декартовой плоскости CShape и разработать иерархию классов конкретных фигур C++
Создать абстрактный класс Vehicle C++
Создать абстрактный базовый класс с виртуальной функцией - Объем. Создать производные классы: Пирамида, Шар со своими функциями объема C++
Создать абстрактный класс Integer C++
C++ Создать абстрактный базовый класс
Создать иерархию классов Шахматная фигура – абстрактный класс, содержащий поле – цвет. Создать производные классы C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
Yandex
Объявления
21.11.2013, 01:57     Создать абстрактный класс фигур и сделать 2 наследника (треугольник, прямоугольник)
Ответ Создать тему
Опции темы

Текущее время: 03:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru