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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Написать функцию булевского типа, переставляющую местами столбец и строку матрицы. Значение функции «true», если результат отличается от аргумента. http://www.cyberforum.ru/cpp-beginners/thread614836.html
ребят нужна помощь Задачи по программированию. Задача решается на двух языках. Задача 9. Написать функцию булевского типа, переставляющую местами столбец и строку матрицы. Значение функции «true», если результат отличается от аргумента.
C++ Написать процедуру перемножения матриц. ребят нужна помощь Задачи по программированию. Задача решается на двух языках. Задача 8. Написать процедуру перемножения матриц. http://www.cyberforum.ru/cpp-beginners/thread614835.html
Написать процедуру сложения матриц. C++
ребят нужна помощь Задачи по программированию. Задача решается на двух языках. Задача 7. Написать процедуру сложения матриц. очень нужно к восьми утра!!
C++ Написать программу, выдающую таблицу значений многочлена. Для вычисления значения многочлена написать функцию по схеме Горнера.
ребят нужна помощь Задачи по программированию. Задача решается на двух языках. Задача 6. Написать программу, выдающую таблицу значений многочлена. Для вычисления значения многочлена написать функцию по схеме Горнера. очень нужно к восьми утра!!
C++ Написать функцию булевского типа, определяющую упорядоченность массива целых чисел. http://www.cyberforum.ru/cpp-beginners/thread614831.html
ребят нужна помощь Задачи по программированию. Задача решается на двух языках. Задача 5. Написать функцию булевского типа, определяющую упорядоченность массива целых чисел.
C++ Написать функцию целого типа, определяющую наличие в первой строке матрицы наличие седловой точки. ребят нужна помощь Задачи по программированию. Задача решается на двух языках. Задача 4. Написать функцию целого типа, определяющую наличие в первой строке матрицы наличие седловой точки. очень нужно к восьми утра!! подробнее

Показать сообщение отдельно
asidorchenko
379 / 205 / 25
Регистрация: 09.04.2012
Сообщений: 635
29.06.2012, 14:47     Написать функцию булевского типа, определяющую наличие пересечения заданной прямой и заданного отрезка.
Проверить пересечение прямой и отрезка
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
#include <stdio.h>
#include <malloc.h>
 
// найти пересечение прямых
int f(float a1,float b1,float c1,float a2,float b2,float c2)
{
float det1, det2, det3, x1,y1;
 
// решение системы методом Крамера
det1 = a1*b2 - a2*b1;
 
// система некрамеровская
if (det1 == 0) 
return 0;
 
det2 = (-c1)*b2 - (-c2)*b1;
det3 = a1*(-c2) - a2*(-c1);
 
x1 = det2/det1;
y1 = det3/det1;
 
printf("%.2f %.2f\n", x1, y1); // точка пересечения
 
return 1;
}
 
 
int main()
{
 
float x1,y1,x2,y2; // отрезок
float a1,b1,c1,a2,b2,c2;
 
// прямая задана в формате Ax + By + C = 0
a1 = 1.0;
b1 = 1.0;
c1 =-2.0;
 
x1 = 1;
y1 = 1;
x2 = -1;
y2 = 0;
 
// построить по 2 точкам отрезка прямую в формате Ax + By + C = 0
a2 = y2 - y1;
b2 = x1 - x2;
c2 = x2*y1-x1*y2;
 
 
printf("%d", f(a1,b1,c1,a2,b2,c2));
 
return 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
#include <iostream>
 
using namespace std;
 
// найти пересечение прямых
bool f(float a1,float b1,float c1,float a2,float b2,float c2)
{
float det1, det2, det3, x1,y1;
 
// решение системы методом Крамера
det1 = a1*b2 - a2*b1;
 
// система некрамеровская
if (det1 == 0) 
return false;
 
det2 = (-c1)*b2 - (-c2)*b1;
det3 = a1*(-c2) - a2*(-c1);
 
x1 = det2/det1;
y1 = det3/det1;
 
cout << x1 << " " << y1 << "\n"; // точка пересечения
 
return true;
}
 
 
int main()
{
 
float x1,y1,x2,y2; // отрезок
float a1,b1,c1,a2,b2,c2;
 
// прямая задана в формате Ax + By + C = 0
a1 = 1.0;
b1 = 1.0;
c1 =-2.0;
 
x1 = 1;
y1 = 1;
x2 = -1;
y2 = 0;
 
// построить по 2 точкам отрезка прямую в формате Ax + By + C = 0
a2 = y2 - y1;
b2 = x1 - x2;
c2 = x2*y1-x1*y2;
 
 
cout << f(a1,b1,c1,a2,b2,c2);
 
return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru