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

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

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

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

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

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

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

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

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

Напишите программу формирования массива - C++
Заданы два массива A и B одинаковой размерности. Напишите программу формирования массива С, компоненты которого определяются по формулам: ...

ребят, напишите программу пож-та! - C++
в одномерном массиве элементы которого целые числа удалить все четные числа

Напишите программу, упоорядочивающую числа - C++
Напишите программу, запрашивающую 3 вещественных числа и выводящую их на экран в упорядоченном виде а) по возрастанию; б) по убыванию. ...

Напишите программу для Паскаля - C++
Составить программу 1) Дан целочисленный массив размера N. Вычислить сумму и количе-ство положительных, произведение и количество...

Напишите программу, считающую выражение - C++
Здравствуйте, В общем нужно написать программку, которая будет считать(картинка прилагается) Сам недавно начал изучать С++,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nameless
Эксперт C++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
29.06.2011, 15:46     Напишите программу на СИ! снова геометрия(((( #2
Что конкретно непонятно? Попытки написания программы были?
Protected_fleur
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 77
29.06.2011, 15:48  [ТС]     Напишите программу на СИ! снова геометрия(((( #3
нет, я не знаю как это написать вообще. для первокурсницы это задание просто убийственно!
.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 прямой.
Отнимаем от общего кол-ва точек - макс.кол-во и получаем результат.
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;
}
xAtom
914 / 739 / 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.
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
30.06.2011, 21:26     Напишите программу на СИ! снова геометрия(((( #7
Цитата Сообщение от xAtom Посмотреть сообщение
В языке С, переменные должны объявлятся в начале функции как в Pascal-e.
В С89, в С99 можно и так.
Protected_fleur
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 77
30.06.2011, 21:27  [ТС]     Напишите программу на СИ! снова геометрия(((( #8
а как не крути, все равно не работает(((
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
30.06.2011, 21:28     Напишите программу на СИ! снова геометрия(((( #9
Цитата Сообщение от Protected_fleur Посмотреть сообщение
а как не крути, все равно не работает(((
какие ошибки? в чем пишите?
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.07.2011, 16:46     Напишите программу на СИ! снова геометрия((((
Еще ссылки по теме:

Напишите программу, содержащую структуру - C++
Напишите программу, содержащую структуру студент. Поля - фамилия, группа, оценки (не менее 3). Скажите и проинициализуйте с экземпляры...

Напишите программу преобразования строки в число - C++
Введите с клавиатуры число в буфер программы - строку С-стиля. Преобразуйте строку в целое, длинное целое и вещественное. Выведите числа...

напишите программу формирования массива размеров 5 х 5 - C++
напишите программу формирования массива размеров 5 х 5 с помощью датчика случайных чисел.замените в нем все четные значения элементов...

Напишите программу кодировки (декодировки) текста? - C++
Напишите программу кодировки (декодировки) текста. Каждый символ преобразуется в число, к каждому числу прибавляется константа, числа снова...

Напишите программу, содержащую структуру автомобиль. - C++
Напишите программу, содержащую структуру автомобиль. Поля - марка, цвет, номер, владелец. Скажите и проинициализуйте 2 экземпляра...


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

Или воспользуйтесь поиском по форуму:
Protected_fleur
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 77
02.07.2011, 16:46  [ТС]     Напишите программу на СИ! снова геометрия(((( #11
К счастью, я разобралась сама))))
Yandex
Объявления
02.07.2011, 16:46     Напишите программу на СИ! снова геометрия((((
Ответ Создать тему
Опции темы

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