Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 19.12.2015
Сообщений: 20
1

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

19.12.2015, 15:56. Показов 1538. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста, в программе нельзя использовать структуры, как мне их заменить на массивы? Заранее огромное спасибо..
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2015, 15:56
Ответы с готовыми решениями:

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

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

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

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

7
505 / 317 / 236
Регистрация: 18.02.2013
Сообщений: 754
19.12.2015, 16:02 2
C++
1
int ocr[n][3],toch[m][2];
обращение к i окружности к ординате
C++
1
ocr[i][1];
1
0 / 0 / 0
Регистрация: 19.12.2015
Сообщений: 20
19.12.2015, 16:06  [ТС] 3
То есть и везде заменить a.x и прочее на toch[i][0] и т.д, так?
0
505 / 317 / 236
Регистрация: 18.02.2013
Сообщений: 754
19.12.2015, 16:06 4
типа того
1
0 / 0 / 0
Регистрация: 19.12.2015
Сообщений: 20
19.12.2015, 16:07  [ТС] 5
а в функции ничего менять не нужно?
0
505 / 317 / 236
Регистрация: 18.02.2013
Сообщений: 754
19.12.2015, 16:11 6
естественно нужно, Вы же теперь туда строки матрицы засылаете
1
0 / 0 / 0
Регистрация: 19.12.2015
Сообщений: 20
19.12.2015, 16:33  [ТС] 7
Что то я все равно не понимаю, как разные точки в функции задать, было point a и point b а сейчас что нужно написать? Если есть возможность не могли бы вы помочь
0
505 / 317 / 236
Регистрация: 18.02.2013
Сообщений: 754
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.12.2015, 16:45
Помогаю со студенческими работами здесь

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

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

Определить количество точек пересечения двух окружностей
Подскажите, пожалуйста, какой случай я не учёл? Программа проходит 5 тестов из 7: #include &lt;cmath&gt;...

с++ множество точек
задача: множество точек определяет выпуклый многоугольник. построить многоугольник, который...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru