Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Rerr
0 / 0 / 0
Регистрация: 19.12.2015
Сообщений: 20
#1

Множество точек и окружностей - C++

19.12.2015, 15:56. Просмотров 227. Ответов 7
Метки с++ (Все метки)

Помогите пожалуйста, в программе нельзя использовать структуры, как мне их заменить на массивы? Заранее огромное спасибо..
C++ (Qt)
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <clocale>
#include <ctime>
#include <cmath>
#include <iostream>
#include <string>
 
using namespace std;
 
 
struct point {
    double x,y;
};
struct okr {
    double x,y,r;
};
 
const int nmax=30;
 
/* функция определяет пересекается прямая с окржуностью или нет */
bool Peres(point a, point b, okr c) 
{
    double h; /*строим треугольник с концами в координатах прямой и вершиной в центре окружности. Ищем высоту от координаты окружности к прямой*/
    h = (abs((b.y-a.y)*c.y + (a.x-b.x)*c.x + (a.x*b.y - a.y*b.x)))/(sqrt((b.y-a.y)*(b.y-a.y)+(a.x-b.x)*(a.x-b.x)));
    return (h<c.r); // если высота меньше радиуса, пересекаются
}
 
 
int main() {
    point a[nmax];
    okr b[nmax];
    int n,m,i,j,k,p,mx,imx,jmx;
 
    do {
        cout << "Количество точек до " << nmax << " n=";
        cin >> n;
    }while(n<2 || n>30);
 
    do {
        cout << "Количество окружностей до " << nmax << " m=";
        cin >> m;
    }while(m<1 || m>30);
 
    for(i=0; i<n; ++i) {
       cout << "Введите координаты точки("<<i+1<<"):\nX=";
    cin >> a[i].x;
    cout << "Y=";
    cin >> a[i].y;
    }
 
    for(i=0; i<m; ++i) {
        cout << "Введите координаты окружности("<<i+1<<"):\nX=";
    cin >> b[i].x;
    cout << "Y=";
    cin >> b[i].y;
    cout << "R=";
    cin >> b[i].r;
    
    }
 
    cout << "Координаты точек:\nX:";
    for(i=0;i<n;++i)
        cout << a[i].x << " ";
    cout << "\nY:";
    for(i=0;i<n;++i)
        cout << a[i].y << " ";
    cout << "\n\nПараметры окружностей:\nX:";
    for(i=0;i<m;++i)
        cout << b[i].x << " ";
    cout << "\nY:";
    for(i=0;i<m;++i)
        cout << b[i].y << " ";
    cout << "\nR:";
    for(i=0;i<m;++i)
        cout << b[i].r << " ";
    cout << "\n\n";
    /* ищем прямую с максимальными пересечениями */
    mx=0;
    imx=0;
    jmx=0;
 
    for(i=0;i<n-1;++i)
        for(j=i+1;j<n;++j) 
        {
            k=0;
            for(p=0;p<m;++p)
                if(Peres(a[i],a[j],b[p]))
                    ++k;
            if(k>mx) 
            {
                mx=k;
                imx=i;
                jmx=j;
            }
        }
 
    if(mx==0)
        cout << "Нет пересекающихся прямых с окружностями\n";
    else
        cout << "Максимальное число пересечений прямой с окружностями="<< mx
            << "\nЭта прямая проходит через точки ("<<a[imx].x<<';'<<a[imx].y<<") и ("<<a[jmx].x<<';'<<a[jmx].y<<")\n";
    cout << "\n";
    system("pause");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2015, 15:56
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Множество точек и окружностей (C++):

На плоскости заданы множество точек А и множество прямых В (каждая прямая задается значениями коэффициентов ур
На плоскости заданы множество точек А и множество прямых В (каждая прямая...

На плоскости заданы множество точек А и множество прямых B
На плоскости заданы множество точек А и множество прямых B. Найти две такие...

Дано множество точек на плоскости, заданных полярными координатами. Получить декартовы координаты этих точек
Получилось сделать для координаты одной точки, а как сделать для множества...

Множество точек.Найти множество треугльники
ДАно 3n точек на плоскости , причем не какие три не лежат на одной прямой....

На плоскости задано множество точек. Выбрать три различные точки так, чтобы проходящая через них окружность делила это множество на группы
На плоскости задано множество точек. Выбрать три различные точки так, чтобы...

Задано множество точек в трехмерном пространстве. Найти минимум радиусов шаров с центрами в этих точках, содержащих ровно n точек этого множества
Задано множество точек в трехмерном пространстве. Найти минимум радиусов шаров...

7
olya7
489 / 306 / 231
Регистрация: 18.02.2013
Сообщений: 738
19.12.2015, 16:02 #2
C++
1
int ocr[n][3],toch[m][2];
обращение к i окружности к ординате
C++
1
ocr[i][1];
1
Rerr
0 / 0 / 0
Регистрация: 19.12.2015
Сообщений: 20
19.12.2015, 16:06  [ТС] #3
То есть и везде заменить a.x и прочее на toch[i][0] и т.д, так?
0
olya7
489 / 306 / 231
Регистрация: 18.02.2013
Сообщений: 738
19.12.2015, 16:06 #4
типа того
1
Rerr
0 / 0 / 0
Регистрация: 19.12.2015
Сообщений: 20
19.12.2015, 16:07  [ТС] #5
а в функции ничего менять не нужно?
0
olya7
489 / 306 / 231
Регистрация: 18.02.2013
Сообщений: 738
19.12.2015, 16:11 #6
естественно нужно, Вы же теперь туда строки матрицы засылаете
1
Rerr
0 / 0 / 0
Регистрация: 19.12.2015
Сообщений: 20
19.12.2015, 16:33  [ТС] #7
Что то я все равно не понимаю, как разные точки в функции задать, было point a и point b а сейчас что нужно написать? Если есть возможность не могли бы вы помочь
0
olya7
489 / 306 / 231
Регистрация: 18.02.2013
Сообщений: 738
19.12.2015, 16:45 #8
например
C++
1
bool Peres(point *a, point *b, okr *c)
{}

а в вызове
C++
1
if(Peres(a[i],a[j],b[p]))
1
19.12.2015, 16:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2015, 16:45
Привет! Вот еще темы с решениями:

Определить количество точек пересечения двух окружностей
Подскажите, пожалуйста, какой случай я не учёл? Программа проходит 5 тестов из...

Множество точек m
Трям. Имеется условие: Задано множество точек m в трехмерном пространстве....

множество точек
Задано множество точек, найти пару самых удаленных и самих близких плз...

Окружнось и множество точек
Задача звучит так: There are multitude of points(M) defined on the plane and...


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

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

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