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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить, находятся ли данные прямые в общем положении http://www.cyberforum.ru/cpp-beginners/thread80872.html
Помогите доделать пожалуйста! Имеется n прямых на плоскости, заданных коэффициентами. Определить, находятся ли данные прямые в общем положении, т.е. все они различны, никакие две из них не параллельны и никакие три не пересекаются в одной точке. #include <iostream> #include <stdio.h> #include <math.h> #include <conio.h> #include <clocale> #define _CRT_SECURE_NO_DEPRECATE 0
C++ функции помогите пожалуйста решить задачу оформить следующие задачи через функции. 1. Вычислить значения функции F на интервале от Хнач. до Хкон. с шагом dX ax^2 + b/c , при x<1 и c|=0 F = { (x-a)/(x-c)^2 , при x>15 и c=0 x^2/c^2 , в остальных случаях где a, b, c – действительные числа http://www.cyberforum.ru/cpp-beginners/thread80871.html
C++ работа со строками
помогите пожалуйста написать программу, которая считывает текст из файла и выводит на экран только строки, не содержащие двузначных чисел спасибо!
C++ упорядочивание строк матрицы
никак не могу написать программы по индивидуальным заданиям, и списать негде:( помогите пожалуйста!!! коэффициенты системы линейных уравнений заданы в виде прямоугольной матрицы. с помощью допустимых преобразований привести систему к треугольному виду. найти количество строк, среднее арифметическое элементов которых меньше заданной величины. заранее спасибо!
C++ создания и работы с файлами в языке С++ http://www.cyberforum.ru/cpp-beginners/thread80865.html
1.1 Создать файл, содержащий сведения о месячной заработной плате сотрудников отдела. Каждая запись содержит поля: фамилия сотрудника, наименование отдела, размер заработной платы за месяц, должность сотрудника. 1.2Вычислить общую сумму зарплат работников. Вывести на экран сотрудников у каторых зарплата ниже введёной с клавиатуры. Помогите пожалусто сделал точто смог ,как сделать вторую часть...
C++ никак не могу разобраться с с++ Здравствуйте. У меня проблема. Я не знаю С++ и надо сдавать программы завтра,часть я сама как то написала,но вот остальное без понятия и уже мозг не соображает. Пожалуйста напишите эти задачи. 1)Календарь При решении задач этого раздела принять во внимание, что в современном (григорианском) календаре каждый год, номер которого делится на 4, является високосным, за исключением тех номеров,... подробнее

Показать сообщение отдельно
nameless
Эксперт C++
314 / 296 / 14
Регистрация: 16.06.2009
Сообщений: 486
29.06.2011, 19:54     Определить минимальное подмножество точек, после удаления которых останутся точки лежащие на одной прямой
Protected_fleur,

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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
// поиск прямой на которой лежит  максимальное число точек. 
#define X 0
#define Y 1
 
// y=kx+b
double Calc_K(double x1, double y1, double x2, double y2)
{       
        return (y1-y2)/(x1-x2);
}
 
// y=kx+b
double Calc_B(double x1, double y1, double x2, double y2)
{       
        return (y2*x1-y1*x2)/(x1-x2);
}
 
int main ()
{
 
        double k,b, finder[2][2];
        int counter, temp=-1, n;
 
        printf("Enter number points( n>2 ): ");
        scanf("%d", &n);
        if(n<=2) { printf("Number points is little"); _getch(); _exit(EXIT_FAILURE);}
 
        double ** Points = (double**)malloc(n * sizeof(double*));
        for (int i=0; i<n; i++)
        {
                Points[i]= (double*)malloc(2 * sizeof(double));
                printf("Enter pair[%d]:\nx: ", i + 1); scanf("%f", &Points[i][X]);
                printf("y: ");                                                                                             scanf("%f", &Points[i][Y]) ;      
        }       
 
        for (int i=1; i<n; i++)
        {               
                //if(Points[i-1][X]==Points[i][X])  continue;
 
                k=Calc_K(Points[i-1][X], Points[i-1][Y], Points[i][X], Points[i][Y]);
                b=Calc_B(Points[i-1][X], Points[i-1][Y], Points[i][X], Points[i][Y]);
                counter=2;
                for (int j=i+1; j<n; j++)
                {
                        if(Points[j][Y]==k*Points[j][X]+b) ++counter;
                }
                if(counter>temp) 
                { 
                        temp=counter; 
                        finder[0][X]=Points[i-1][X]; finder[1][X]=Points[i][X];
                        finder[0][Y]=Points[i-1][Y]; finder[1][Y]=Points[i][Y];
                }
        } // for (int i=1;
 
        printf("points: %d\n line:: x1: %f y1: %f\nx2: %f y2: %f", temp, finder[0][X], finder[0][Y], finder[1][X], finder[1][Y]);
 
        _getch();
        return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru