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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
yutr777
4 / 4 / 0
Регистрация: 07.04.2013
Сообщений: 85
#1

нужно посчитать, сколько можно провести прямых, которые не будут параллельны другим прямым уже находящимся на коорд. плоскости. - C++

03.05.2013, 22:18. Просмотров 444. Ответов 4
Метки нет (Все метки)

Вообщем нам даны N пар чисел X и Y, обозначающие координаты точек.
Нам нужно посчитать, сколько можно провести прямых, которые не будут параллельны другим прямым уже находящимся на коорд. плоскости.
Спасибо заранее!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2013, 22:18     нужно посчитать, сколько можно провести прямых, которые не будут параллельны другим прямым уже находящимся на коорд. плоскости.
Посмотрите здесь:
Посчитать шарики, которые будут уничтожены C++
C++ На плоскости задано множество прямых. Найти количество пересечений этих прямых
C++ Выяснить, какие из прямых параллельны, а какие - нет
Нужно Посчитать сколько пробелов нажато (C++) C++
Какой нужно знать минимум, чтобы уже можно было искать работу по C++ C++
Сортировка диагоналей матрицы, которые параллельны побочной, пузырьком C++
Посчитать количество денег, которые нужно заплатить за цветы, продающиеся группами с разной стоимостью C++
C++ Выяснить взаимное расположение прямых на плоскости
Дано 2 массива A и В, целых чисел. Нужно посчитать количество тех чисел которые A[i]>B[i] C++
Найти точку на плоскости, чтобы максимально расстояние от нее до заданных прямых было минимальным C++
C++ Найти среди прямых, заданных на плоскости, ту прямую, которая имеет наибольшее число пересечений с остальными
C++ На плоскости заданы множество точек А и множество прямых В (каждая прямая задается значениями коэффициентов ур

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
2918 / 1347 / 134
Регистрация: 29.11.2010
Сообщений: 2,721
04.05.2013, 12:52     нужно посчитать, сколько можно провести прямых, которые не будут параллельны другим прямым уже находящимся на коорд. плоскости. #2
Странная задача.
Так как на плоскости бесконечное количество линий, ответ будет -- бесконечное количество.

Добавлено через 2 минуты
Зачем тут еще N линий -- непонятно.
nonedark2008
879 / 618 / 125
Регистрация: 28.07.2012
Сообщений: 1,657
04.05.2013, 13:40     нужно посчитать, сколько можно провести прямых, которые не будут параллельны другим прямым уже находящимся на коорд. плоскости. #3
yutr777, первое что приходит в голову - это пробежать по всем парам точек, для каждой пары вычислять вектор направления. Ищем этот вектор среди прошлых(Они могут быть однонаправленные и разнонаправленные), если такой нашелся, то прямая через эти точки паралельна какой-то другой в прошлом. Если такой же вектор не нашелся, то мы нашли еще одну не паралельную прямую.

Добавлено через 1 минуту
Еще можно попробовать рассматривать не вектор направления, а например тангенс угла наклона.
yutr777
4 / 4 / 0
Регистрация: 07.04.2013
Сообщений: 85
05.05.2013, 07:56  [ТС]     нужно посчитать, сколько можно провести прямых, которые не будут параллельны другим прямым уже находящимся на коорд. плоскости. #4
Цитата Сообщение от nonedark2008 Посмотреть сообщение
yutr777, первое что приходит в голову - это пробежать по всем парам точек, для каждой пары вычислять вектор направления. Ищем этот вектор среди прошлых(Они могут быть однонаправленные и разнонаправленные), если такой нашелся, то прямая через эти точки паралельна какой-то другой в прошлом. Если такой же вектор не нашелся, то мы нашли еще одну не паралельную прямую.

Добавлено через 1 минуту
Еще можно попробовать рассматривать не вектор направления, а например тангенс угла наклона.
вот что я написал через угловые коэф. вроде правильно? код легкий....разобраться можно
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
#include <iostream>
#include <algorithm>
#include <set>
 
using namespace std;
 
int main()
{
int n;
cin >> n;
double kof;
int a[201],b[201];
for (int i=0;i<n;i++)
{
    cin >> a[i] >> b[i];
}
set <double> s;
int ans=0;
for (int i=0;i<n;i++)
    for (int j=i+1;j<n;j++)
    {
        int x1=a[i];int x2=a[j];
        int y1=b[i];int y2=b[j];
        if (y2-y1==0){kof=2000;goto pr;}
        kof=(y2-y1)/(x2-x1);
        pr:
               if (s.find(kof) != s.end())
        {
                        continue;
        }
        else {
             ans++;
             s.insert(kof);
             }
    }
cout << ans;
return 0;
}
nonedark2008
879 / 618 / 125
Регистрация: 28.07.2012
Сообщений: 1,657
05.05.2013, 13:00     нужно посчитать, сколько можно провести прямых, которые не будут параллельны другим прямым уже находящимся на коорд. плоскости. #5
Цитата Сообщение от yutr777 Посмотреть сообщение
(y2-y1)/(x2-x1)
Тут целочисленное деление. Будет пахать не как надо...
Цитата Сообщение от yutr777 Посмотреть сообщение
if (y2-y1==0){kof=2000;goto pr;}
Вот в этой проверке не вижу смысла. Стоило бы проверять x2-x1 == 0, потому что тогда тангенс будет неопределен. Но можно эту проверку вообще не делать, т.к. тогда kof просто установится в INF и мы смело можем его искать в сете и добавлять туда.

Не по теме:


goto - выглядит очень не красиво в коде. Старайся заменять его на циклы и условия.

Yandex
Объявления
05.05.2013, 13:00     нужно посчитать, сколько можно провести прямых, которые не будут параллельны другим прямым уже находящимся на коорд. плоскости.
Ответ Создать тему
Опции темы

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