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

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

Войти
Регистрация
Восстановить пароль
 
Protected_fleur
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 77
#1

Напишите программу на СИ! снова геометрия(((( - C++

29.06.2011, 15:26. Просмотров 489. Ответов 10
Метки нет (Все метки)

Нужно написать программу на си, которая это выполнит...

Задано множество точек на плоскости, не лежащих на одной прямой. Определить минимальное количество точек, после удаления которых остаются точки, лежащие на одной прямой.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2011, 15:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Напишите программу на СИ! снова геометрия(((( (C++):

Как сделать чтобы таймер дойдя до 0 стартовал снова и снова? - C++
Здравствуйте :) Как сделать чтобы таймер дойдя до 0 стартовал снова и снова? TimerSec = 59; TimerMin = 6; for(int i = TimerSec;...

Напишите программу - C++
помогите пожалуйсто написать программу.условие в фотографии потрудитесь перепечатать задание.

Напишите программу с if - C++
Предположим, что A говорит: "Или я лжец, или два плюс два - пять". К какому заключению можно прийти на основании этого...

Снова хром, снова сапопроизвольно открывается, снова bkrfdf.xyz и казино - Удаление вирусов
Здравствуйте! Собственно, проблема уже не новая, хотя, как показывают сообщения форума, за последние дни выскочившая у многих. Через...

Напишите программу, реализующую работу очереди. Напишите функции для добавления/удаления элемента в очередь - C#
Помогите пожалуйста написать программу. Готовый Queue не нужен( Нужно изобрести велосипед заново. Задание: Напишите программу,...

Массивы. Загрузите программу, проверьте ее исполнение, замените вызов процедуры ввода на вызов присваивания и снова исполните программу - Pascal ABC
Загрузите программу lab11.pas, проверьте ее исполнение, замените вызов процедуры ввода на вызов присваивания и снова исполните программу: ...

10
nameless
Эксперт С++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
29.06.2011, 15:46 #2
Что конкретно непонятно? Попытки написания программы были?
0
Protected_fleur
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 77
29.06.2011, 15:48  [ТС] #3
нет, я не знаю как это написать вообще. для первокурсницы это задание просто убийственно!
0
.4rray
8 / 8 / 0
Регистрация: 15.12.2010
Сообщений: 41
29.06.2011, 21:14 #4
Найти уравнение прямой на плоскости. Вникнуть.
Задание по смыслу то же, что и найти макс. кол-во точек, лежащих на 1 прямой.

Метод в лоб:
1. Выбрать 2 точки и по ним построить ур-е прямой. Некоему счетчику присвоить 2.
2. Есть ли ещё точки.
- да: Текущий счётчик + 1.
- нет: Если новый счетчик > старого, присвоим старому = новый. Иначе пункт №1.
3. Проверить принадлежит ли она этому ур-ю.
- да : идем пункт №2
- нет: новый счётчик присвоить 2, идём пункт №1).

В последнем оставшемся счётчике будет макс. кол-во точек, лежащих на 1 прямой.
Отнимаем от общего кол-ва точек - макс.кол-во и получаем результат.
1
Protected_fleur
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 77
30.06.2011, 20:55  [ТС] #5
ААА! ну почему на си она не работает?!

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
#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: ");              
                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];
                }
        } 
 
        printf("points: %d\n", temp);
        printf("line:: x1: %f y1: %f\nx2: %f y2: %f", finder[0][X], finder[0][Y], finder[1][X], finder[1][Y]);
        _getch();
        return 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
#include <iostream>
using namespace std;
 
 
// поиск прямой на которой лежит  максимальное число точек. 
#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;
 
        cout<<"Enter number points( n>2 ): ";
        cin>>n;
        if(n<=2) { 
        cout<<"Number points is little";
        system("pause");  
        return 0;}
 
        double ** Points = new  double* [n];
        for (int i=0; i<n; i++)
        {
                Points[i]= new double [2];
                cout<<"Enter pair["<<i+1<<"]:\nx: "; 
                cin>>Points[i][X];
                cout<<"y: ";
                cin>>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;
 
        cout<<"points: "<<temp<<"\n line:: x1: "<<finder[0][X]<<" y1: "<<finder[0][Y]
        <<"\n        x2: "<<finder[1][X]<<" y2: "<<finder[1][Y]<<endl;
        system("pause");
        return 0;
}
0
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
30.06.2011, 21:12 #6
Цитата Сообщение от Protected_fleur Посмотреть сообщение
for (int i
В языке С, переменные должны объявлятся в начале функции как в Pascal-e.
C
1
2
  double k,b, finder[2][2];
  int counter, temp=-1, n, i; // вот сюда из циклов for перенеси, чтобы было так for(i = 0;
На будущее всегда динамическую память нужно зачищать для C++ new/delete, C malloc, calloc, realloc/free.
0
asics
Freelance
Эксперт С++
2848 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
30.06.2011, 21:26 #7
Цитата Сообщение от xAtom Посмотреть сообщение
В языке С, переменные должны объявлятся в начале функции как в Pascal-e.
В С89, в С99 можно и так.
0
Protected_fleur
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 77
30.06.2011, 21:27  [ТС] #8
а как не крути, все равно не работает(((
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
30.06.2011, 21:28 #9
Цитата Сообщение от Protected_fleur Посмотреть сообщение
а как не крути, все равно не работает(((
какие ошибки? в чем пишите?
0
Protected_fleur
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 77
30.06.2011, 21:31  [ТС] #10
Maxwe11, прога на С вот что выдает при любых точках:
points: 2
line:: x1: 0.000000 y1: 0.000000
x2: 0.000000 y2: 0.000000
0
Protected_fleur
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 77
02.07.2011, 16:46  [ТС] #11
К счастью, я разобралась сама))))
0
02.07.2011, 16:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.07.2011, 16:46
Привет! Вот еще темы с ответами:

снова не могу написать программу( - Visual Basic
нужно написать программу.. сама пробую, ничего не получается..могу сделать только в обычном бэйсике.. Даны два числа x и y. Вычислить ...

HP 625 снова и снова перезагружается в безопасный не заходит - Ремонт ноутбуков
Ребята помогите , проблема вот какая врубаю я ноут он доходит до заставки майкрософта и снова перезагружается в безопасный не заходит, ...

и снова .htaccess и снова rewriterule - Apache, htaccess
Добрый день. Недавно столкнулся с проблемой преобразования URL, в связи с чем пришлось перерыть кучу материала по данной теме, но вопрос...

И снова я, и снова вылезающий установочник - Удаление вирусов
Через промежутки времени вылезает установочник раньше можно было закрыть на крестик теперь он отсутствует и кнопка отмены не работает. Я...


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

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

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