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

Класс "Отрезок". Вычислить длину отрезка. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Кто сам выучил С++ http://www.cyberforum.ru/cpp-beginners/thread444860.html
Вот хотел спросить как вы сами выучили С++ и что для это надо что бы ументь программировать на С++,
C++ Указатели файлов Добрый день всем! Сразу прошу не поливать грязью, мол "стопицот раз говорилось". Проблема с режимами ios::ate и ios::app при открытии файла для записи. Перелопатил гугл, на этом форуме была тема и везде один ответ: ios::ate - указатель для записи смещается в конец, при этом только один раз, а указатель ios::app - СТРОГО в конец (т.е. каждый раз при записи). Сразу начну с того, что в книге Лафоре... http://www.cyberforum.ru/cpp-beginners/thread444858.html
Работа с char* в классе C++
Приветствую. Задача: разработать класс, с методами и т.д. И нужно использовать в качестве поля char*. Но он какой-то тугой (то есть не он, а я), в итоге виснет, видимо, потому что неправильно инициализирую переменную в main. Каким образом написать, чтобы не висло: Соответственно, реализация через 3 файла: #include <cstdlib> #ifndef PERSON_H #define PERSON_H using namespace std; class...
Матрица_формирование новой матрицы C++
Вот условие задачи:Составить прогу,которая получает матрицу Х размерностью mxn. Прога в каждой строке определяет наименьший элемент и его индексы и формирует из этих чисел матрицу, расположив в первом её столбце наименьшие элементы строк, а во 2 и 3 столбцах их индексы. Я не уверен во 2 функции. Мне кажется у меня там полный бред. Помогите разобраться. И если есть ещё какие-то недочёты,...
C++ Вывести на экран данные автомобиля http://www.cyberforum.ru/cpp-beginners/thread444841.html
Добрый день! Необходимо было создать класс авто. Не получается вывести на экран данные автомобиля, предварительно занесенные: #include "stdafx.h" #include <conio.h> #include <stdio.h> #include <string.h> #include <iostream> using namespace std;
C++ И еще одна задача по С++... Проверить: Можно ли коробку размером a x b x c упаковать в посылку размером r x s x t? «Углом» укладывать нельзя.. Углом, это как?! И решить ее надо, используя условный оператор и оператор выбора. вот. Заранее спасибо) подробнее

Показать сообщение отдельно
пацанчо
-6 / 0 / 0
Регистрация: 02.04.2011
Сообщений: 38
26.02.2012, 15:43  [ТС]     Класс "Отрезок". Вычислить длину отрезка.
вот кое что накалякал))

Пересечение 2-ух отрезков
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
struct pt {
    int x, y;
};
 
inline int area (pt a, pt b, pt c) {
    return (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x);
}
 
inline bool intersect_1 (int a, int b, int c, int d) {
    if (a > b)  swap (a, b);
    if (c > d)  swap (c, d);
    return max(a,c) <= min(b,d);
}
 
bool intersect (pt a, pt b, pt c, pt d) {
    return intersect_1 (a.x, b.x, c.x, d.x)
        && intersect_1 (a.y, b.y, c.y, d.y)
        && area(a,b,c) * area(a,b,d) <= 0
        && area(c,d,a) * area(c,d,b) <= 0;
}
Добавлено через 54 секунды
вот еще кое что

Главной здесь является функция , которая пересекает два переданных ей отрезка, и если они пересекаются хотя бы по одной точке, то возвращает , а в аргументах и возвращает начало и конец отрезка-ответа (в частности, когда ответ — это единственная точка, возвращаемые начало и конец будут совпадать).
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
const double EPS = 1E-9;
 
struct pt {
    double x, y;
 
    bool operator< (const pt & p) const {
        return x < p.x-EPS || abs(x-p.x) < EPS && y < p.y - EPS;
    }
};
 
struct line {
    double a, b, c;
 
    line() {}
    line (pt p, pt q) {
        a = p.y - q.y;
        b = q.x - p.x;
        c = - a * p.x - b * p.y;
        norm();
    }
 
    void norm() {
        double z = sqrt (a*a + b*b);
        if (abs(z) > EPS)
            a /= z,  b /= z,  c /= z;
    }
 
    double dist (pt p) const {
        return a * p.x + b * p.y + c;
    }
};
 
#define det(a,b,c,d)  (a*d-b*c)
 
inline bool betw (double l, double r, double x) {
    return min(l,r) <= x + EPS && x <= max(l,r) + EPS;
}
 
inline bool intersect_1d (double a, double b, double c, double d) {
    if (a > b)  swap (a, b);
    if (c > d)  swap (c, d);
    return max (a, c) <= min (b, d) + EPS;
}
 
bool intersect (pt a, pt b, pt c, pt d, pt & left, pt & right) {
    if (! intersect_1d (a.x, b.x, c.x, d.x) || ! intersect_1d (a.y, b.y, c.y, d.y))
        return false;
    line m (a, b);
    line n (c, d);
    double zn = det (m.a, m.b, n.a, n.b);
    if (abs (zn) < EPS) {
        if (abs (m.dist (c)) > EPS || abs (n.dist (a)) > EPS)
            return false;
        if (b < a)  swap (a, b);
        if (d < c)  swap (c, d);
        left = max (a, c);
        right = min (b, d);
        return true;
    }
    else {
        left.x = right.x = - det (m.c, m.b, n.c, n.b) / zn;
        left.y = right.y = - det (m.a, m.c, n.a, n.c) / zn;
        return betw (a.x, b.x, left.x)
            && betw (a.y, b.y, left.y)
            && betw (c.x, d.x, left.x)
            && betw (c.y, d.y, left.y);
    }
}
Добавлено через 18 минут
воообщем нужны еще функции деления отрезка на части, угол между 2-мя отрезками и параллельный перенос 2-ух отрезков.и как потом все это встроить в класс, который написал rangerx?
 
Текущее время: 21:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru