Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
1 / 1 / 3
Регистрация: 04.12.2016
Сообщений: 60
1

На плоскости заданы n отрезков координатами концевых точек

15.02.2017, 10:17. Просмотров 1282. Ответов 2
Метки нет (Все метки)

На плоскости заданы n отрезков координатами концевых точек. Концы отрезков задаются двумя парами координат (x1[i],y1[i]), (x2[i],y2[i]), 1<=i<=n (концы принадлежат отрезку).

Help please.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.02.2017, 10:17
Ответы с готовыми решениями:

На плоскости заданы координатами n точек. Создать матрицу, элементами которой являются расстояние между каждой парой
На плоскости заданы своими координатами n точек. Создать матрицу, элементами которой являются...

Отрезок задан координатами своих концевых точек. Требуется вычислить длину этого отрезка
проваливает 3 тест Отрезок задан координатами своих концевых точек. Требуется вычислить длину...

На плоскости заданы n отрезков координатами концевых точек
На плоскости заданы n отрезков координатами концевых точек. Концы отрезков задаются двумя парами...

На плоскости заданы своими координатами n точек. Определить расстояния от каждой из точек до другой
На плоскости заданы своими координатами n точек.Создать массив размером n(n-1), элементами которого...

2
Эксперт C
23480 / 14721 / 3098
Регистрация: 24.12.2010
Сообщений: 31,395
15.02.2017, 10:32 2
В чем вопрос-то?
0
1 / 1 / 3
Регистрация: 04.12.2016
Сообщений: 60
15.02.2017, 10:52  [ТС] 3
Лучший ответ Сообщение было отмечено sandydark как решение

Решение

Байт, как это организовать.// или верно ли работает мой код.


Пропустил мимо глаз когда писал условие. Вот суть задачи : Необходимо найти прямую, имеющую общие точки с максимальным числом отрезков, и напечатать в порядке возрастания номера тех отрезков, которые эта прямая пересекает.

вот что у меня имеется,но я не уверен что оно работает верно. часть с "На плоскости заданы n отрезков координатами концевых точек" я пропустил.
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
#include <iostream>
#include <stdio.h>
#include <conio.h>
 
using namespace std;
const int n=20;
struct line
{
int x1,y1,x2,y2;
};
 
int main()
{
int i,j;
int num_intersect[n][n];//nomer otrezka;peresechen li c drygim otrezkom. 1-da,0-net
line obj[n];
int count=0;//chislo peresecheniy
int num=0;//nomer otrezka y kotorogo bol'we vcego peresecheniy
 
for(i=0;i<n;i++)//slychainim sposobom dlya kajdogo otrezka zadaem coord. i vivodim ih
{
obj[i].x1=rand()%100;
obj[i].y1=rand()%100;
obj[i].x2=rand()%100;
obj[i].y2=rand()%100;
cout<<"("<<obj[i].x1<<","<<obj[i].y1<<");("<<obj[i].x2<<","<<obj[i].y2<<")\n";
}
 
for(i=0;i<n;i++)//po vsem otrezkam
{
int cnt=0;
for(j=0;j<n;j++)//kajdiy otrezok sravnivaem so vsemi drygimi i viyasnyaem peresekautsya oni ili net 
{
if(i==j)
{
num_intersect[i][j]=0;
continue;
}
int v1=(obj[j].x2-obj[i].x1)*(obj[i].y1-obj[j].y1)-(obj[j].y2-obj[j].y1)*(obj[i].x1-obj[j].x1);
int v2=(obj[j].x2-obj[i].x1)*(obj[i].y2-obj[j].y1)-(obj[j].y2-obj[j].y1)*(obj[i].x2-obj[j].x1);
int v3=(obj[i].x2-obj[i].x1)*(obj[j].y1-obj[i].y1)-(obj[i].y2-obj[i].y1)*(obj[j].x1-obj[i].x1);
int v4=(obj[i].x2-obj[i].x1)*(obj[j].y2-obj[i].y1)-(obj[i].y2-obj[i].y1)*(obj[j].x2-obj[i].x1);
if((v1*v2<0) && (v3*v4<0))
{
num_intersect[i][j]=1;
cnt++;
}
else
num_intersect[i][j]=0;
}
 
if(count<cnt)//esli mi naidem otrezok y kotorogo bol'we vsego peresecheniy zapominaem ego nomer i chislo peresecheniy 
{
num=i;
count=cnt;
}
}
cout<<endl<<endl;
cout<<"line: "<<num<<" count: "<<count<<"| ";//vivodim nomer otrezka y kotorogo bol'we vcego peresecheniy, kol-vo pereseheniy coord
cout<<"("<<obj[num].x1<<","<<obj[num].y1<<");("<<obj[num].x2<<","<<obj[num].y2<<")\n\n";
for(i=0;i<n;i++)//pechataem nomer i coord. otrezkov s kotorimi peresekaetsya neidenniy nami
{
if(num_intersect[num][i]==1)
{
cout<<"num line: "<<i<<"| ";
cout<<"("<<obj[i].x1<<","<<obj[i].y1<<");("<<obj[i].x2<<","<<obj[i].y2<<")\n";
}
}
 getch();
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.02.2017, 10:52

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

На плоскости заданы своими координатами n точек. Создать массив размером n(n-1), элементами которого является расстояние от каждой из точек до n-1 др.
Помогите пожалуйста решить! Пожалуйста! На плоскости заданы своими координатами n точек. Создать...

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

На плоскости заданы своими координатами n точек
На плоскости заданы своими координатами n точек.Создать массив размером n(n-1) элементами которого...

На плоскости N различных точек заданы своими координатами. Найти уравнение прямой
Здравствуйте, если кто может помочь то буду рад очень, надеюсь на помощь, не работает должным...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.