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

си++ - C++

Восстановить пароль Регистрация
 
Calipso
 Аватар для Calipso
0 / 0 / 0
Регистрация: 21.12.2011
Сообщений: 6
14.05.2012, 18:44     си++ #1
подскажи пожалуйста как сделать след: определение класса прописать в заголовочном файле, а реализация в отдельной библиотеке
код основного потока проги должен подключать заголовок, а не конкретную библиотеку
вот в этой вот программе


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
#include <iostream>
#include <cmath>
 
using namespace std;
 
class bean {
 
public:
    double ox;
    double oy;
    double dx1;
    double dy1;
    double dx2;
    double dy2;
    
    bean (double a = 0, double b = 0, double c = 0, double d = 0, double e = 0, double f = 0) {
        ox = a;
        oy = b;
        dx1 = c;
        dy1 = d;
        dx2 = e;
        dy2 = f;
    }
    int sektorpoint (double x, double y) {
        if (ox == dx1)
            {if ((ox - dx2) * (ox - x) < 0) return 0;}
        else
            if (oy == dy1)
                {if ((oy - dy2) * (oy - y) < 0) return 0;}
            else
                if (((dy2 - oy) - (dy1 - oy) * (dx2 - ox) / (dx1 - ox)) * ((y - oy) - (dy1 - oy) * (x - ox) / (dx1 - ox)) < 0) return 0;
        if (ox == dx2)
            {if ((ox - dx1) * (ox - x) < 0) return 0;}
        else
            if (oy == dy2)
                {if ((oy - dy1) * (oy - y) < 0) return 0;}
            else
                if (((dy1 - oy) - (dy2 - oy) * (dx1 - ox) / (dx2 - ox)) * ((y - oy) - (dy2 - oy) * (x - ox) / (dx2 - ox)) < 0) return 0;
        return 1;
    }
        double corner () {
        double k1, k2;
        if (dx1 == ox) k1 = 0;
        else
            k1 = (dy1 - oy) / (dx1 - ox);
        if (dx2 == ox) k2 = 0;
        else
            k2 = (dy2 - oy) / (dx2 - ox);
        return atan(abs((k2 - k1) / (1 + k1 * k2))) * 180 / 3.1415926535897932384626433832795;
    }
};
 
int main () {
    bean sektor(2, 2, 2, 4, 4, 4); 
    if(sektor.sektorpoint(3, 4)) cout << "POINT IN THE SEKTOR" << endl; else cout << "POINT OUT OF THE SEKTOR" << endl;
    cout << "CORNER VALUE: " << sektor.corner() << endl;
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1783
Регистрация: 18.12.2011
Сообщений: 14,175
Завершенные тесты: 1
14.05.2012, 19:27     си++ #2
заголовочный файл bean.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class bean 
{
private:
double ox;
double oy;
double dx1;
double dy1;
double dx2;
double dy2;
public:
bean (double a = 0, double b = 0, double c = 0, double d = 0, double e = 0, double f = 0);
int sektorpoint (double x, double y);
double corner ();
};
файл bean.cpp
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
#include <iostream>
#include <cmath>
using namespace std;
#include "bean.h"
bean::bean (double a = 0, double b = 0, double c = 0, double d = 0, double e = 0, double f = 0) {
ox = a;
oy = b;
dx1 = c;
dy1 = d;
dx2 = e;
dy2 = f;
}
int bean::sektorpoint (double x, double y) {
if (ox == dx1)
{if ((ox - dx2) * (ox - x) < 0) return 0;}
else
if (oy == dy1)
{if ((oy - dy2) * (oy - y) < 0) return 0;}
else
if (((dy2 - oy) - (dy1 - oy) * (dx2 - ox) / (dx1 - ox)) * ((y - oy) - (dy1 - oy) * (x - ox) / (dx1 - ox)) < 0) return 0;
if (ox == dx2)
{if ((ox - dx1) * (ox - x) < 0) return 0;}
else
if (oy == dy2)
{if ((oy - dy1) * (oy - y) < 0) return 0;}
else
if (((dy1 - oy) - (dy2 - oy) * (dx1 - ox) / (dx2 - ox)) * ((y - oy) - (dy2 - oy) * (x - ox) / (dx2 - ox)) < 0) return 0;
return 1;
}
double bean::corner () {
double k1, k2;
if (dx1 == ox) k1 = 0;
else
k1 = (dy1 - oy) / (dx1 - ox);
if (dx2 == ox) k2 = 0;
else
k2 = (dy2 - oy) / (dx2 - ox);
return atan(abs((k2 - k1) / (1 + k1 * k2))) * 180 / 3.1415926535897932384626433832795;
}
файл testbean.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <cmath>
using namespace std;
#include "bean.h"
int main () 
{
    bean sektor(2, 2, 2, 4, 4, 4);
    if(sektor.sektorpoint(3, 4)) cout << "POINT IN THE SEKTOR" << endl; else cout << "POINT OUT OF THE SEKTOR" << endl;
    cout << "CORNER VALUE: " << sektor.corner() << endl;
    return 0;
}
Yandex
Объявления
14.05.2012, 19:27     си++
Ответ Создать тему
Опции темы

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