Форум программистов, компьютерный форум 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, является високосным, за исключением тех номеров,... подробнее

Показать сообщение отдельно
Protected_fleur
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 77
30.06.2011, 16:10     Определить минимальное подмножество точек, после удаления которых останутся точки лежащие на одной прямой
не могу найти ошибку((( не считает...выдает нули и все((((


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
#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]:\n x: ", i + 1); 
                scanf("%f", &Points[i][X]);
                printf("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]);
        return 0;
        _getch();
}
Добавлено через 18 часов 38 минут
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
#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();
        return 0;}
 
        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]:\n x: ", i + 1); 
                scanf("%f", &Points[i][X]);
                printf("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;
}
Помогите пожалуйста!!! почему не считает(((
 
Текущее время: 08:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru