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

Множество точек определяет ломаную. Имеет ли она самопересечения? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ указатели и строки? http://www.cyberforum.ru/cpp-beginners/thread22461.html
Люди помогите понять, ни как не дается это страшное слово указатель. Так в общем немного ясно, не понятно вот что: Считается что эти два выражения идентичны, ТАК? char * st1="string1"; char...
C++ Минимальный элемент матрицы в каждой диагонали, параллельной главной используя какой цикл, можно искать минимальный элемент матрицы в каждой диагонали, параллельной главной диагонали матрицы? http://www.cyberforum.ru/cpp-beginners/thread22453.html
C++ Замена малых латинских букв символом "$"
Как написать функцию, которая для заданного в качестве параметра массива типа char заменяет все малые латинские буквы символом «$» и возвращает количество выполненных замен?
Передача многомерного массива переменного размера в функцию C++
Как в с передается в функцию многомерный массив, чья размерность определеяется "по ходу дела". Вариант в фортране: ... call f(m,n,x) .... subroutine f(m,n,x) integer m,n real x(m,n) x(i,j)...
C++ Возвращение функцией wchar_t значения. http://www.cyberforum.ru/cpp-beginners/thread22424.html
Такой вопросик. Нижеследующий код - это концепция. в качестве аргумента функции должна быть переменная типа wchar_t, функция должна произвести некоторые манипуляции со значеним агрумента и...
C++ Транспортабельность Как сделать программы на Borlandc++ рабочими в независимости от того установлен ли борланд на компе или нет, как собрать все нужные файлы до одного экзешника. подробнее

Показать сообщение отдельно
Andrey B
0 / 0 / 0
Регистрация: 06.02.2015
Сообщений: 5
06.02.2015, 17:42
Пожалуйста необходима помощь в исправлении этой же задачи !
Имеет ли ломанная точку самопересечения
1- да 0 -нет

Очень плохо работаю со структурами но алгоритм нахождения точки пересечения правильный
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<stdlib.h>
#include<math.h>
 
 
typedef struct 
 
{ int x; int y; } point; 
 
typedef struct 
{ 
point p1; point p2;
 
} line; 
 
int check_lines(line, line, point);
 
 
int check_lines(line *line1, line *line2, point *hitp) { 
 
int d = (line2->p2.y - line2->p1.y)*(line1->p2.x-line1->p1.x) - (line2->p2.x - line2->p1.x)*(line1->p2.y-line1->p1.y); 
int n_a = (line2->p2.x - line2->p1.x)*(line1->p1.y-line2->p1.y) - (line2->p2.y - line2->p1.y)*(line1->p1.x-line2->p1.x); 
int n_b = (line1->p2.x - line1->p1.x)*(line1->p1.y - line2->p1.y) - (line1->p2.y - line1->p1.y)*(line1->p1.x - line2->p1.x);  
if(d == 0) return 0; 
int ua = (n_a << 14)/d; int ub = (n_b << 14)/d; 
 
{ hitp->x = line1->p1.x + ((ua * (line1->p2.x - line1->p1.x))>>14); hitp->y = line1->p1.y + ((ua * (line1->p2.y - line1->p1.y))>>14); return 1; } 
return 0; 
 
}
 
 
int task(char *FileName)
{
line *all_lines;
point  *points;
 
FILE *f_in,*f_out;
int n,rez,i,j;
    
    f_in=fopen("in.txt","r");
    f_out=fopen("out.txt","w");
 
    fscanf(f_in,"%d",&n);
    if (n<=2) return -777; else 
 
    points=(point*)malloc(sizeof(point)*(n+2));
    all_lines=(line*)malloc(sizeof(line)*(n+2));
 
        for(i=0;i<n;i++)
        {
            fscanf(f_in,"%lf%lf",&all,&points[i].y);
        }
            
                
 
                    for(i=1;i<n;i++)
                    {
                        for(j=1;j<n-1;j++)
                        {
                            rez=check_lines(&all_lines[i],&all_lines[i+1],&points[i]);
                            
                            if(rez==1)
                            {
                                fprintf(f_out,"%d",rez);
                                return 0;
                            }
                        }
                    }
    
                    fprintf(f_out,"%d",rez);
                
                        
    fclose(f_in);
    fclose(f_out);
    free (all_lines);
    free (points);
    return 0;
}
Добавлено через 17 минут
Пожалуйста очень нужна Ваша Помощь !!
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru