1 / 1 / 1
Регистрация: 06.01.2013
Сообщений: 80

Из данных точек перебрать все комбинации по 2 треугольника и проверить, принадлежит ли первый треугольник второму

06.01.2013, 19:40. Показов 862. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем пишу курсовую работу. Уже устал биться с ней... Вот задание: дано N точек, из них нужно перебрать все комбинации по 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
#include <stdio.h>
#include <math.h>
float square(float m1, float n1, float m2, float n2, float m3, float n3);
int main()
{
    FILE *fout, *fin;
    int N;
    float x1, x2, x3, x4, x5, x6, y1, y2, y3, y4, y5, y6, sf, ss, s, s1, s2, s3, s4, s5, s6, s7, s8, s9, tmp, t = 0.01;
    fin=fopen("Koord.txt","r");
    fout=fopen("Result.txt","w");
 
    fscanf(fin,"%d \n",&N);
 
    float* X = new float [N];                             
 
    float* Y = new float [N];                             
 
    for (int i = 0; i < N; i++)    
        {
            fscanf(fin,"%f %f \n",&X[i],&Y[i]);
        }
 
        
    for (int a = 0; a < N; a++)   
        for (int b = 0; b < N; b++) 
            for (int c = 0; c < N; c++)   
                for (int d = 0; d < N; d++)
                    for (int e = 0; e < N; e++)   
                        for (int f = 0; f < N; f++) 
    {
        x1 = X[a];   x2 = X[b];   x3 = X[c];  
        y1 = Y[a];   y2 = Y[b];   y3 = Y[c];
        x4 = X[d];   x5 = X[e];   x6 = X[f];
        y4 = Y[d];   y5 = Y[e];   y6 = Y[f];  
 
        //if ((x1!=x2)&&(x2!=x3)&&(x1!=x3)&&(x4!=x5)&&(x5!=x6)&&(x4!=x6)&&(y1!=y2)&&(y2!=y3)&&(y1!=y3)&&(y4!=y5)&&(y5!=y6)&&(y4!=y6))
        //if ((a!=b)&&(b!=c)&&(a!=c)&&(d!=e)&&(e!=f)&&(d!=f))
        //if ((y1!=y2!=y3)&&(x1!=x2!=x3)&&(y4!=y5!=y6)&&(x4!=x5!=x6))
 
        
 
        sf = square(x1,y1,x2,y2,x3,y3);
        ss = square(x4,y4,x5,y5,x6,y6);
        s1 = square(x4,y4,x2,y2,x3,y3);
        s2 = square(x1,y1,x4,y4,x3,y3);
        s3 = square(x1,y1,x2,y2,x4,y4);
        s4 = square(x5,y5,x2,y2,x3,y3);
        s5 = square(x1,y1,x5,y5,x3,y3);
        s6 = square(x1,y1,x2,y2,x5,y5);
        s7 = square(x6,y6,x2,y2,x3,y3);
        s8 = square(x1,y1,x6,y6,x3,y3);
        s9 = square(x1,y1,x2,y2,x6,y6);
        if ((sf != 0) && (ss != 0))
            
        {
        if (((sf<0) && (sf<=s1) && (s1<=0) && (sf<=s2) && (s2<=0) ||
            (sf>0) && (sf>=s1) && (s1>=0) && (sf>=s2) && (s2>=0)) &&
            ((sf<0) && (sf<=s4) && (s4<=0) && (sf<=s5) && (s5<=0) ||
            (sf>0) && (sf>=s4) && (s4>=0) && (sf>=s5) && (s5>=0)) &&
            ((sf<0) && (sf<=s7) && (s7<=0) && (sf<=s8) && (s8<=0) ||
            (sf>0) && (sf>=s7) && (s7>=0) && (sf>=s8) && (s8>=0)))
        {
            s = ss - sf;
            fprintf(fout,"1-й треугольник:\nA(%3.1f;%3.1f) \nB(%3.1f;%3.1f) \nC(%3.1f;%3.1f) \n2-й треугольник:\nA1(%3.1f;%3.1f) \nB1(%3.1f;%3.1f) \nC1(%3.1f;%3.1f) \n1-й треугольник полностью принадлежит 2-му\nS2-S1=%3.1f\n\n",x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,s);
        }
        else
        {
            fprintf(fout,"1-й треугольник:\nA(%3.1f;%3.1f) \nB(%3.1f;%3.1f) \nC(%3.1f;%3.1f) \n2-й треугольник:\nA1(%3.1f;%3.1f) \nB1(%3.1f;%3.1f) \nC1(%3.1f;%3.1f) \n1-й треугольник не принадлежит полностью 2-му\n\n",x4,y4,x5,y5,x6,y6,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6);
        }
        }
    }
        
}
    
float square(float m1, float n1, float m2, float n2, float m3, float n3)
{
    float square = 0.5 * abs((m1 - m3) * (n2 - n3) - (m2 - m3) * (n1 - n3));
    return square;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.01.2013, 19:40
Ответы с готовыми решениями:

Построить два треугольника с вершинами в заданном множестве точек на плоскости так, чтобы первый треугольник лежал строго внутри второго
Здравствуйте, помогите пожалуйста решить задачу: Построить два треугольника с вершинами в заданном множестве точек на плоскости...

Перебрать все возможные комбинации
Доброго времени суток. Столкнулся с такой задачей и не знаю, как подступится. Опишу своими словами. Есть четыре столбика слов. В...

Перебрать все комбинации цифр
Люди помогите как перебрать все комбинации цифр на с++ или Паскаль. Например дано 1 2 3 4 прог будет перебрать 1 2 4 3; 1 3 2 4; 1 3 4...

2
Модератор
 Аватар для vxg
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
07.01.2013, 01:24
суть задания не понял. что бы убрать проверку уже проверенных точек можно завести для каждой точки флаг "уже проверена", устанавливать его для уже проверенных точек, а при проверке пропускать точки с уже установленным флагом
0
1 / 1 / 1
Регистрация: 06.01.2013
Сообщений: 80
07.01.2013, 15:10  [ТС]
Хах, сам спрравился уже)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.01.2013, 15:10
Помогаю со студенческими работами здесь

Перебрать все комбинации заданных чисел
Здравствуйте. Это легче показать на примере. Будет нагляднее. Например, в первой строке консоли вводятся несколько некоторых чисел (то...

Перебрать все комбинации сортировки list
Есть List экземпляров класса List&lt;int&gt; lst=new List&lt;int&gt;(); for (int i=0; i&lt;4; i++) { lst.Add(i); } Нужно сделать так, чтобы мы...

Перебрать все возможные комбинации цифр
Помогите написать код, котрый будет выводить все числа, например, в троичной системе. Т. е. Нам даны числа 0,1,2. Нужно вывести 0 1 2...

Перебрать все возможные комбинации заданных символов
нужно программа, которая перебирает все возможные комбинации заданных символов,

Перебрать все возможные комбинации трех фигур
подскажите как реализовать такое: есть три фигуры - круг,квадрат,треугольник необходимо создать возможные комбинации из 3,4,5,6,7,8,9,...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
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? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru