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

Пересекаются ли отрезки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сформировать новый список, в котором элементы расположены в порядке возрастания http://www.cyberforum.ru/cpp-beginners/thread57714.html
Дан список F=<1,8,9,0,1,3,2,4,1,12,23,1,23,2,19,1>.Сформировать новый список в котором элементы расположены в порядке возростания.Программка не работает,незнаю где ошибка))Что-то не так с SortList(((
C++ Можно ли из под linux писать приложения для Windows c использыванием графики!!?? Очень заинтересовал етот вопрос так как отформатил жосткий и поставил линух а теперь незнаю ... http://www.cyberforum.ru/cpp-beginners/thread57655.html
C++ dev-c++ и windows
Товарищи програмисты вспоможите кто чем может!начал я программировать в dev-c++, под windows хотел прогу написать а ак код увидел понял - енто не Visual C++!подскажите где книжку по dev взять для win?
C++ Массивы
Помогите пожалуйста решить... Уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные нулями. Выполнить задание, используя динамическое выделение памяти.
C++ vc++ (error C2447) http://www.cyberforum.ru/cpp-beginners/thread57600.html
ривет, я вот только начинаю не ругайтесь, написал по учебнику вот такое #include <iostream.h> #include <stdafx.h> void main (void); { cout << "типа хело ворлд"; }
C++ Матрица, массив и т.д. Народ помогите начал только Си изучать дали такую задачу все никак не могу решить, помогите!!! Разработать алгоритм и программу обеспечивающую представление матрицы произвольного размера с возможностью изменения числа строк и столбцов, вывода на экран подматрицы любого размера и всей матрицы. Программа должна содержать меню, позволяющее осуществить проверку. если можно то на Си.. подробнее

Показать сообщение отдельно
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
21.10.2009, 06:22     Пересекаются ли отрезки
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
#include <iostream.h>
#include <Windows.h>
#include <process.h>
struct koor{ double a, b;};
double A1, A2, B1, B2, C1, C2, x, y, mas[4], temp;
int i, j;
bool r;
int main()
{
        SetConsoleCP(1251);
        SetConsoleOutputCP(1251);
        koor A, B, C, D;
        cout<<"Ââåäèòå êîîðäèГ*Г*ГІГ» òî÷êè A\n";
        {
        cin>>A.a>>A.b;
        mas[0]=A.a;
        }
        cout<<"Ââåäèòå êîîðäèГ*Г*ГІГ» òî÷êè B\n";
        {
        cin>>B.a>>B.b;
        mas[1]=B.a;
        }
        cout<<"Ââåäèòå êîîðäèГ*Г*ГІГ» òî÷êè C\n";
        {
        cin>>C.a>>C.b;
        mas[2]=C.a;
        }
        cout<<"Ââåäèòå êîîðäèГ*Г*ГІГ» òî÷êè D\n";
        {
        cin>>D.a>>D.b;
        mas[3]=D.a;
        }
        A1=A.b-B.b;
        B1=B.a-A.a;
        C1=A.a*B.b - B.a*A.b;
        A2=C.b-D.b;
        B2=D.a-C.a;
        C2=C.a*D.b - D.a*C.b;
        r=true;
        if(A1*B2-A2*B1==0)
        {
            if(A1/A2==B1/B2 && A1/A2==C1/C2)
            {
                for(i=0; i<3; i++)
                    for(j=0; j<3-i; j++)
                        if(mas[j]>mas[j+1])
                        {
                            temp=mas[j];
                            mas[j]=mas[j+1];
                            mas[j+1]=temp;
                        }
                if((A.a<=C.a && A.a>=D.a) || (A.a>=C.a && A.a<=D.a) || (B.a<=C.a && B.a>=D.a) || (B.a>=C.a && B.a<=D.a) || (A.a<C.a && B.a>C.a))
                    cout<<"Ïåðåñå÷åГ*ГЁГҐ îòðåçêîâ ÿâëÿåòñÿ ëèГ*ГЁГҐГ© Гў ïðîìåæóòêå Г± Гµ="<<mas[1]<<" ГЇГ® x="<<mas[2]<<endl;
                else
                    cout<<"Ïåðåñå÷åГ*ГЁГї Г*ГҐГІ"<<endl;
            }
            else
                cout<<"Ïåðåñå÷åГ*ГЁГї Г*ГҐГІ"<<endl;
        r=false;
        }
        else
        {
            x=(C1*B2-C2*B1)/(A1*B2-A2*B1)*-1;
            y=(A1*C2-A2*C1)/(A1*B2-A2*B1)*-1;
            if(A.a<B.a && C.a<D.a)
                if(x>=A.a && x<=B.a && x>=C.a && x<=D.a)
                {
                    cout<<"Ïðÿìûå ïåðåñåêГ*ГѕГІГ±Гї Гў òî÷êå x="<<x<<"   y="<<y<<endl;
                    r=false;
                }
            if(A.a<B.a && C.a>D.a)
                if(x>=A.a && x<=B.a && x<=C.a && x>=D.a)
                {
                    cout<<"Ïðÿìûå ïåðåñåêГ*ГѕГІГ±Гї Гў òî÷êå x="<<x<<"   y="<<y<<endl;
                    r=false;
                }
            if(A.a>B.a && C.a<D.a)
                if(x<=A.a && x>=B.a && x>=C.a && x<=D.a)
                {
                    cout<<"Ïðÿìûå ïåðåñåêГ*ГѕГІГ±Гї Гў òî÷êå x="<<x<<"   y="<<y<<endl;
                    r=false;
                }
            if(A.a>B.a && C.a>D.a)
                if(x<=A.a && x>=B.a && x<=C.a && x>=D.a)
                {
                    cout<<"Ïðÿìûå ïåðåñåêГ*ГѕГІГ±Гї Гў òî÷êå x="<<x<<"   y="<<y<<endl;
                    r=false;
                }
        }
        if(r)
            cout<<"Ïåðåñå÷åГ*ГЁГї Г*ГҐГІ"<<endl; 
        system("pause");
        return 0;
}
Хотел бы остановиться на вводе данных. Например на экране написано: "Введите координаты точки A", нужно ввести соответственно два числа. Можно например так: 10enter, 20enter. А можно и так (через пробел): 10 20enter.
Программа работает, единственное не польностью проработанное направление - в случае если два отрезка на одной линии и имеют общий интервал, то этот интервал выводится на экран только ввиде значений 'x'

Добавлено через 18 минут
Всегда времени не хватает, пора бежать на работу:
Строку 52 моего кода замените на:
C++
1
if((A.a<=C.a && A.a>=D.a) || (A.a>=C.a && A.a<=D.a) || (B.a<=C.a && B.a>=D.a) || (B.a>=C.a && B.a<=D.a) || (A.a<C.a && B.a>C.a) || (A.a>C.a && B.a<C.a))
 
Текущее время: 16:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru