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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Поиск последовательности в пакете данных http://www.cyberforum.ru/cpp-beginners/thread616284.html
Имеется файл в формате .sig, содержащий пакеты данных, необходимо в этом пакете обнаружить определенную последовательность символов, подскажите пожалуйста через что подступиться, с чего начать?
C++ Строка: Распечатать на экране по отдельности все цифры заданного числа. Задано целое положительное число n. Распечатать на экране по отдельности все его цифры. Например, дано 1253, распечатываем: 1 2 5 3 Как это сделать? http://www.cyberforum.ru/cpp-beginners/thread616263.html
C++ Программа с часами
Доброго времени суток! Вот программа с часами, подскажите пожалуйста почему при запуске выскакивает 9? #include <iostream> using namespace std; class State { public: virtual void handle() =...
C++ Программирование курсора мыши
собственно есть нужда сделать из мышки подобие рычага, я так понимаю нужно привязать курсор к осям координат и допустим, при движении вперёд мышки на компьютер подавался сигнал аналогичный джойстику...
C++ Чтение из БД http://www.cyberforum.ru/cpp-beginners/thread616173.html
Помогите, пожалуйста! Как прочесть ID последней записи в таблице БД?
C++ Реализовать класс Account Реализовать класс Account, представляющий собой банковский счет. В классе должны быть четыре поля: фамилия владельца, номер счета, процент начисления и сумма в рублях. Открытие нового счета... подробнее

Показать сообщение отдельно
Alex1000
0 / 0 / 0
Регистрация: 02.01.2012
Сообщений: 17

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

29.06.2012, 11:20. Просмотров 297. Ответов 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
80
81
82
83
84
85
86
87
88
89
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <iomanip>
#include <locale>
#include <conio.h>
using namespace std;
// описание структура вектора
struct vect 
{   double x;
    double y;
};
// вычисление суммы векторов
vect sumVect(vect a,vect b){
    vect c;
    c.x=a.x+b.x;
    c.y=a.y+b.y;
    return c;
};
// вычисление разности векторов
vect difVect(vect a,vect b){
    vect c;
    c.x=a.x-b.x;
    c.y=a.y-b.y;
    return c;
};
// вычисление скалярного произведения 
double scalMult(vect a,vect b){
    return (a.x*b.x+a.y*b.y);
}
// вычисление произведения числа на вектор
vect numbMult(double n, vect a){
    vect b;
    b.x=n*a.x; b.y=n*a.y;
    return b;
}
// вычисление проекции вектора а на вектор n
vect proectAN(vect a,vect n) {
    double k = scalMult(a,n)/scalMult(n,n);
    return(numbMult(k,n));
}
// вычисление проекции вектора а плоскость с нормалью n
vect normAN(vect a,vect n){
    vect b=proectAN(a,n);
    return(difVect(a,b)); 
}
// печать вектора
void printVect(vect a){
    cout << "\nx= " <<a.x << "\ty= " << a.y; 
}
// чтение из файла массива тестов
int inTests(int &k, vect *&a, vect *&n){
    ifstream f;
    char filename[100];
    cout << "введите имя файла с тестами" << endl;
    cin >> filename;
 
    f.open(filename);
    if (!f)
        return 0;
    f >> k;
    a=new vect[k]; n=new vect[k];
    for (int i=0;i<k;i++)
        f >> a[i].x >> a[i].y >> n[i].x >> n[i].y;
    f.close();
    return 1;
}
int main()
{
    setlocale(LC_ALL,"russian");
 
    int k;
    vect *a, *n;
    // ввод тестов
    if (!inTests(k,a,n)){
        cout << "\n не прошло чтение тестов !!!\n"; return 0;
    }
    vect an,aon;
    // цикл по тестам
    for (int i=0; i<k; i++){
        cout << "\nvect"; printVect(a[i]);
        cout << "\nnorm"; printVect(n[i]);
        cout << "\nproect"; an=proectAN(a[i],n[i]); printVect(an);
        cout << "\nnormal"; aon=normAN(a[i],n[i]); printVect(aon);
        cout << "\nortogon\t" << scalMult(an,aon);
        cout << "\n";
    }
    return(0);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru