Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/22: Рейтинг темы: голосов - 22, средняя оценка - 4.55
-6 / 0 / 0
Регистрация: 02.04.2011
Сообщений: 38

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

12.02.2012, 13:52. Показов 4399. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
создать класс отрезок,чтобы также можно было вычислить длину отрезка
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.02.2012, 13:52
Ответы с готовыми решениями:

Отрезок задан координатами своих концевых точек. Требуется вычислить длину этого отрезка
проваливает 3 тест Отрезок задан координатами своих концевых точек. Требуется вычислить длину этого отрезка. Входной файл...

Объект Отрезок. Создать методы вычисляющие длину отрезка и угол с осью X
Дано відрізок: метод обчислення довжини, кута з віссю ОХ та їх виведення. Перевожу за ТС: Дан отрезок. Создать методы вычисления...

Создать базовый класс «отрезок», описав в нем функции задания параметров отрезка
Создать базовый класс «отрезок», описав в нем функции задания параметров отрезка, вывода их на экран, нахождения длины отрезка. Породить от...

7
Cандальная шляпа
 Аватар для Doctor Nano
42 / 42 / 36
Регистрация: 12.01.2012
Сообщений: 187
12.02.2012, 14:02
А поточнее, можно?
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
12.02.2012, 22:15
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
#include <iostream>
#include <cmath>
 
//-----------------
struct point
{
  double x;
  double y;
  
  point(double x, double y)
    : x(x), 
      y(y)
  {
  }
};
 
//-----------------
class line_segment
{
  private:
    point a_;
    point b_;
    double len_;
 
  public:
    line_segment(const point& a, const point& b)
      : a_(a), 
        b_(b)
    {
      len_ = std::sqrt(std::pow(b.y - a.y, 2) + std::pow(b.x - a.x, 2));
    }
 
    double length() const
    {
      return len_;
    }
};
 
//-----------------
int main()
{
  line_segment obj(point(3, 5), point(5, 8));
  std::cout << obj.length() << std::endl; 
}
2
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
24.02.2012, 17:13
Ну так давайте формулы / наработки. Или все делать за вас? Тут не стол заказов.
Цитата Сообщение от пацанчо Посмотреть сообщение
создать класс отрезок,чтобы также можно было вычислить длину отрезка
rangerx создал вам такой класс.

Цитата Сообщение от пацанчо Посмотреть сообщение
и это все?))
Это всё!
1
-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?
0
26.02.2012, 19:18
 Комментарий модератора 
пацанчо, используйте тег вставки кода :
[CPP ]без пробелов[ /CPP] или кнопка С++ на панели окна редактирования сообщения
Если с вашей стороны и в дальнейшем будут куски не оформленного кода, можете рассчитывать на последнее китайское предупреждение, а ваша и так не очень гламурная репутация уйдет в глубокое небытие.
1
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
04.03.2012, 23:16
угол между двумя отрезками - это умножение векторов, перенос - сложение

класс с векторами

Добавлено через 1 минуту
ой.. вот он - Создать класс, для работы с динамическими векторами
1
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,461
18.03.2012, 16:07
что не то?
вы:
Цитата Сообщение от пацанчо Посмотреть сообщение
угол между 2-мя отрезками и параллельный перенос 2-ух отрезков
я:
Цитата Сообщение от vxg Посмотреть сообщение
угол между двумя отрезками - это умножение векторов, перенос - сложение
в архиве: описаны операции над векторами
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.03.2012, 16:07
Помогаю со студенческими работами здесь

Вычислить длину отрезка по координатам вершин
1)разработать функцию f(x1,y1, x2, y2), которая вычисляет длину отрезка по координатам вершин (x1,y1) и (х2,у2), и функцию d(a,b,c),...

Вычислить длину отрезка по координатам вершин
Разработать функцию f(x1,y1,x2,y2),которая вычисляет длину отрезка по координатам вершин (x1,xy1) и (x2,y2) и функцию t(a,b,c) которая...

Вычислить длину отрезка заданного координатами начала и конца
Всем доброго времени суток! Не могу понять, где именно ошибка. &quot;Ввести с клавиатуры координаты двух точек (A и B). Вычислить длину...

На числовой оси вычислить длину отрезка между двумя пунктами
Здравствуйте, подскажите пожалуйста, как в c++ на числовой оси вычислить отрезок между двумя пунктами? Нужно указать пункт A и пункт B,...

Разработать алгоритм и программу, определяющую длину отрезка и угол наклона отрезка к оси X (в градусах)
Добрый день! Поможете написать программку на плюсах, вот задание: Отрезок на плоскости задан координатами своих концов. Разработать...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru