С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 17.02.2022
Сообщений: 5

Создать функцию определяющую расстояние между двумя точками

17.02.2022, 21:47. Показов 894. Ответов 7
Метки с++ (Все метки)

Студворк — интернет-сервис помощи студентам
Создать функцию, определяющую расстояние между двумя точками по координатам (по желанию, используйте структуры) и функцию, определяющую площадь
треугольника (любым спосбом). Дано множество точек плоскости (их координаты). Определите треугольник максимальной площади, созданный из этих точек.

Помогите, пожалуйста. Уже три дня сижу за этой задачей. Не понимаю как всё связать.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.02.2022, 21:47
Ответы с готовыми решениями:

Подпрограмма: Создать функцию, определяющую расстояние между двумя точками по координатам...
Создать функцию, определяющую расстояние между двумя точками по координатам(пожеланию,используйте структуры)и функцию, определяющую, что...

Создать функцию, определяющую расстояние между двумя точками по координатам (по желанию, используйте структуры)
Создать функцию, определяющую расстояние между двумя точками по координатам (по желанию, используйте структуры) и функцию, определяющую,...

Определить функцию, которая возвращает расстояние между двумя точками на плоскости
Определить функцию, которая возвращает расстояние между двумя точками на плоскости.Вычислить расстояние между всеми точками с координатами...

7
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
17.02.2022, 21:59
Цитата Сообщение от Bogdan12Bogdan Посмотреть сообщение
Уже три дня сижу за этой задачей
Покажи, что высидел. Может быть мы поможем собрать
1
0 / 0 / 0
Регистрация: 17.02.2022
Сообщений: 5
17.02.2022, 22:16  [ТС]
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#define eps 0.00000001
using namespace std;
 
double dictance (double x1, double y1, double x2, double y2) {
    return sqrt(pow((x2-x1),2)+pow((y2-y1),2));
}
 
double square(double x, double y, double z)
{
    double p;
    p = (x + y + z) / 2;
    return sqrt(p*(p - x)*(p - y)*(p - z));
}
 
int main() {
    int n;
     struct Point { //Объявляем структуру Point(хранит координаты точки)
        int x;
        int y;
    };
    double a1,b1,a2,b2,q1,w1,e1;
    cin>> a1>>b1>>a2>>b2;
    cout<<dictance (a1,b1,a2,b2);
    return 0;
    q1=distance
    cout<< square(q1,w1,e1);
    }
    
Пока что только так. Дальше не могу понять. Алгоритм какой должен быть понимаю, но как осуществить задачу - нет. Простите, если это глупо, я только 1 курс
 
[size="1"][color="grey"][I]Добавлено через 14 минут[/I][/color][/size]
#include <cstdlib>
#include <iostream>
#include <cmath>
 
 
using namespace std;
 
void Input(int **arrayDots, const size_t n)
{
    for(int i = 0; i < n; i++)
    {
        cout<<"Введите координаты точки "<<i+1<<endl;
 
        for(int j = 0; j < 2; j++)
        {
            cin >> arrayDots[i][j];
        }
    }
}
 
void Output(int **arrayDots, const size_t n)
{
    cout<<"Координаты введеных точек:"<<endl;
 
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < 2; j++)
        {
            cout << arrayDots[i][j] << ' ';
        }
        cout << '\n';
    }
}
 
//нахождение площади треугольника по формуле Герона
double Square (double a, double b, double c)
{
    double p = (a + b + c)/2;
    double s = sqrt ( p*(p-a)*(p-b)*(p-c) );
 
    return s;
}
 
//проверка на существование треугольника из заданых отрезков
bool isTriangle (double a, double b, double c)
{
    if (a >= b+c) return false;
    if (b >= a+c) return false;
    if (c >= a+b) return false;
 
    return true;
}
 
int main()
{  
    setlocale(LC_CTYPE,"Russian");
 
    int n = 0;
 
    do 
    {
        cout<<"Введите количество точек: ";
        cin>>n;
 
        if (n < 3)
            cout<<"Неверное количество точек"<<endl<<endl;
    } while (n < 3);
 
    int **arrayDots = NULL;
 
    arrayDots = new int * [n];
 
    for (int i = 0; i < n; i++)
    {
        arrayDots[i] = new int[2];
    }
 
    Input(arrayDots, n);
 
    Output(arrayDots, n);
 
    double maximalSquare = 0,
        a = 0,//1 - я сторона
        b = 0,//2 - я
        c = 0,//3 - я
        sqrX = 0,//квадрат разности координаты Х между 2 - мя точками
        sqrY = 0;//квадрат разности координаты У между 2 - мя точками
 
    for (int c1 = 0; c1 < n; c1++)
    {
        for (int c2 = 0; c2 < n; c2++)
        {
            for (int c3 = 0; c3 < n; c3++)
            {
                sqrX = pow( (double)abs(arrayDots[c1][0] - arrayDots[c2][0]), 2 );
                sqrY = pow( (double)abs(arrayDots[c1][1] - arrayDots[c2][1]), 2 );
                a = pow( sqrX + sqrY, 0.5);//длина стороны между точками с1 и с2
 
                sqrX = pow( (double)abs(arrayDots[c1][0] - arrayDots[c3][0]), 2 );
                sqrY = pow( (double)abs(arrayDots[c1][1] - arrayDots[c3][1]), 2 );
                b = pow( sqrX + sqrY, 0.5);//длина стороны между точками с1 и с3
 
                sqrX = pow( (double)abs(arrayDots[c2][0] - arrayDots[c3][0]), 2 );
                sqrY = pow( (double)abs(arrayDots[c2][1] - arrayDots[c3][1]), 2 );
                c = pow( sqrX + sqrY, 0.5);//длина стороны между точками с2 и с3 
 
                if ( isTriangle (a, b, c) )
                {
                    double _temp = Square( a, b, c);
 
                    if( _temp > maximalSquare )                  
                    {
                        maximalSquare = _temp;  
                    }                
                }
            }
        }
    }
 
    cout << "Максимальная площадь треугольника: " << maximalSquare << endl;
 
    
}
Нашел на просторах интернета один код, немного его исправил. Но я все равно не очень понимаю, удовлетворяет ли он вопросам в задаче. И также не понимаю, как его сделать по функционалу и по виду, чтобы он был похож на код первокурсника
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
17.02.2022, 22:26
Цитата Сообщение от Bogdan12Bogdan Посмотреть сообщение
Простите, если это глупо
Глупо, но постараемся помочь.
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
#include <iostream>
typedef struct  { //Объявляем структуру Point(хранит координаты точки)
int x;
int y;
} Point;
double dictance (Point p1, Point p2)
{
  return sgrt((p1.x -p2.x)*(p1.x - p2.x) + (p1.y -p2.y)*(p1.y - p2.y));
}
int main() {
   Point p[3];
   double d[3];
   for(int i=0; i<3; i++)
     cin >> p[i].x << p[i].y;
   d[0] = distance(p[0], p[1]);
   d[1] = distance(p[1], p[2]);
   d[2] = distance(p[2], p[0]);
   double per = 0;
   for(int i =0; i<3; i++)
       per += d[i];
   s = sqrt (per*(per=d[0]) *(per - d[1]) (per - d[2]));
   // ....
  return 0;
}
Пока так. Расстояния и площадь.
Разберешься - будем решать основную задачу
0
0 / 0 / 0
Регистрация: 17.02.2022
Сообщений: 5
17.02.2022, 22:29  [ТС]
Это я понимаю полностью. Я понимаю, как создать функции и для точек, и для площади. План кода для этой задачи я понимаю и что нужно сделать. Но не понимаю как всё это реализовать. То, что вы прислали, я понял
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
17.02.2022, 22:37
Просто твою добавку не читал. Но ты пока с этим разберись.
А алгоритм перебора троек точек (нам ведь это нужно) примерно такой
C++
1
2
3
4
5
6
7
8
9
10
11
Point P[n], pi, pj, pk;
for (int i=0; i<n-2; i++) {
   pi = P[i];
   for (int j = i+1; j<n-1; j++) {
     pj = P[j]
     for (int k=j+1; k <n; k++) {    
        pk = P[k];
         // Далее работаешь с треугольником pi, pj, pk 
      }
   }
}
0
0 / 0 / 0
Регистрация: 17.02.2022
Сообщений: 5
17.02.2022, 22:41  [ТС]
Это добавить к тому, что вы прислали выше? И после этого использовать функцию площади треугольника и уже дальше искать максимальную площадь?
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
17.02.2022, 22:50
Цитата Сообщение от Bogdan12Bogdan Посмотреть сообщение
Это добавить к тому,
По-иоему там вс надо немножко иначе огранизовать
Ввести количество точек.
Выделить память для них
Ввести.
И перебирать тройки
Вычисление площади я бы оформил функцией.
Удачи!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.02.2022, 22:50
Помогаю со студенческими работами здесь

Расстояние между двумя множествами точек - это расстояние между наиболее близко расположенными точками этих
1. Расстояние между двумя множествами точек - это расстояние между наиболее близко расположенными точками этих множеств. Найти расстояние...

Составьте функцию, с которой можно будет определять расстояние между двумя точками в трехмерном пространстве
Составьте функцию, с помощью которой можно будет определять расстояние между двумя точками в трехмерном пространстве. C++

Создать функцию нахождения расстояния между двумя точками на плоскости
на экзамене проблема с задачей создать функцию нахождения расстояния между двумя точками на плоскости struct point { double x,y; } ...

Расстояние между двумя точками
Разработать прикладное применение и вычислить расстояние между двумя точками с координатами и .

Расстояние между двумя точками
1. Напишите функцию distance, которая вычисляет расстояние между двумя точками (x1, y1) и (x2, y2). Все числа и возвращаемые значения...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru