Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ вопрос про new из с++ за 21 день https://www.cyberforum.ru/ cpp-beginners/ thread108530.html
контрольный вопрос: что возвращает оператор new, когда для создания объекта нет достаточно памяти7 Добавлено через 12 минут еще вопрос: В чем разница между передачей объектов как ссылки,и...
протабулировать функцию C++
на интервале 0.01=<a>=0.99 протабулировать функцию причем если 0.5<=a=>0.6 то шаг 0.01 иначе 0.05 f=arcsin(a-x)/arccos(x)-a*a, x=0.0068
C++ Работа со структурами: ошибка "Declaration terminated incorrectly"
прога набрана но при запуске вылетает ошибка : E2040 Declaration terminated incorrectly вот сама программа : #include <stdio.h> #include <conio.h> const int n=2; typedef struct
C++ Дана строка, содержащая текст, заканчивающийся точкой. Вывести на экран слова, содержащие три буквы. Дана строка, содержащая текст, заканчивающийся точкой. Вывести на экран слова, содержащие три буквы. https://www.cyberforum.ru/ cpp-beginners/ thread108515.html
C++ рюкзак с элементами https://www.cyberforum.ru/ cpp-beginners/ thread108492.html
Очень нужна помощь....нужно реализовать алгоритм решения задачи о рюкзаке с названием Meet-In-The-Middle на С++.....вот я псевдокод прикинул а на языке не получается сделать 1. Input:...
C++ Последовательность Фибоначчи для строк
#include <conio.h> using namespace std; // переменные char *Ptr; char a, b, c; int i,n; // основная функция int main () { cout << "Vvedite n: \n";
C++ Арифметическое кодирование: верхняя и нижняя границы сошлись
ну не совсем сошлись.. Что делать если верхняя и нижняя грарицы отличаються на 1?(происходить зацикливание) в статье Мастрюкова нашёл такое: "Сделаем следующее: удалим вторые по значи¬мости...
C++ строки, массивы символов 1) #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char command; char fname; https://www.cyberforum.ru/ cpp-beginners/ thread108461.html
C++ С++ классы, строки, указатели https://www.cyberforum.ru/ cpp-beginners/ thread108448.html
С++ только начал изучать, раньше учил Си - вроде все понятно было, но вот с новшествами данного языка как раз и возникли проблемы. Попытаюсь объяснить суть: 1) Составить класс, который будет...
C++ Найти количество элементов, наиболее часто встречающихся в массиве Найти кол-во элементов наиболее частых встречающихся в массиве. например массив: 123000 023400 023450 003456 0-не считается. очевидно тут 3. но как это найти? Найти надо не кол-во, а... https://www.cyberforum.ru/ cpp-beginners/ thread108434.html
7 / 7 / 7
Регистрация: 24.03.2010
Сообщений: 25
10.04.2010, 23:42  [ТС] 0

Геометрия в С++.

10.04.2010, 23:42. Просмотров 815. Ответов 1
Метки (Все метки)

Лучший ответ Сообщение было отмечено Lаmer как решение

Решение

В задании опечатка не "n>=3", а "n = 3".

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
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cmath>
 
struct Spaces
{
    double x1;
    double x2;
    double y1;
    double y2;
};
 
inline void Fil(struct Spaces* spaces, size_t m);
inline void Out(struct Spaces* spaces, size_t m);
void GeoAnalyse(struct Spaces* spaces, size_t m);
 
int main(void)
{
    setlocale(0, "");
    size_t n;
    std::cout << "Введите размерность множеств -> ";
    std::cin >> n;
    Spaces *spaces = new Spaces[n];
    if(spaces)
    {
        std::cout << "Память выделена успешно: " << "spaces[0] = " << &spaces[0];
        std::cout << std::endl;
    }
    else 
    {
        std::cout << "Невозможно выделить память. Дальнейшая работа программы невозможна\n";
        abort();
    }
    Fil(spaces, n);
    Out(spaces, n);
    GeoAnalyse(spaces, n);
    delete[] spaces;
    system("pause");
    return 0;   
}
 
void Fil(struct Spaces* spaces, size_t m)
{
    srand(time(NULL));
    for(size_t i = 0; i < m; ++i)
    {
        spaces[i].x1 = rand()%301 - 101;
        spaces[i].y1 = rand()%301 - 101;
        spaces[i].x2 = rand()%301 - 101;
        spaces[i].y2 = rand()%301 - 101;
    }
}
 
void Out(struct Spaces* spaces, size_t m)
{
    std::cout << "\nТекущее состояние множеств:\n";
    for(size_t i = 0; i < m; ++i)
    {
        std::cout << spaces[i].x1 << '\t';
        std::cout << spaces[i].y1 << '\t';
        std::cout << spaces[i].x1 << '\t';
        std::cout << spaces[i].y1 << '\t';
    }
}
 
void GeoAnalyse(struct Spaces *spaces, size_t m)
{
    double a;
    double b;
    double c;
    double ax;
    double ay;
    double bx;
    double by;
    double cx;
    double cy;
    size_t i;
    for(i = 0; i < 2 * m; ++i)
    {
        a = sqrt(pow(spaces[i + 1].x1 - spaces[i].x1, 2)        
            + pow(spaces[i + 1].y1 - spaces[i].y1, 2));
        b = sqrt(pow(spaces[i + 2].x1 - spaces[i + 1].x1, 2) 
            + pow(spaces[i + 2].y1 - spaces[i + 1].y1, 2));
        c = sqrt(pow(spaces[i + 2].x1 - spaces[i].x1, 2) 
            + pow(spaces[i + 2].y1 - spaces[i].y1, 2));     
        if((a < (b + c)) || (b < (c + a)))
        {
            ax = spaces[i].x1;
            ay = spaces[i].y1;
            bx = spaces[i + 1].x1;
            by = spaces[i + 1].y1;
            cx = spaces[i + 2].x1;
            cy = spaces[i + 2].y1;
            std::cout << "\nВыявлены опорные точки окружности: ";
            std::cout << "A(" << ax << ", " << ay << "), ";
            std::cout << "B(" << bx << ", " << by << "), ";
            std::cout << "С(" << cx << ", " << cy << ")\n";
            break;
        }
    }
    double p = (a + b + c)/2.0;
    double ar = sqrt(p * (p - a) * (p - b) * (p - c));
    double preax = pow(ax, 2);
    double preay = pow(ay, 2);
    double prebx = pow(bx, 2);
    double preby = pow(by, 2);
    double precx = pow(cx, 2);
    double precy = pow(cy, 2);
    double xCentre = (-(1.0)/(4 * ar)) * (bx * (precx + precy) - cx * (prebx + preby)
                       - (ax * (precx - precy) - cx * (preax - preay) + ax * (prebx + preby)
                               - (bx * (preax + preay))));
    double yCentre = (1.0/(4 * ar)) * (by * (precx + precy) - cy * (prebx + preby)
                       - (ay * (precx - precy) - cy * (preax - preay) + ay * (prebx + preby)
                               - (by * (preax + preay))));
    std::cout << "Выявлен центр окружности: O(" << xCentre << ", " << yCentre << ")\n";
    double rad = (a * b * c)/ar;
    size_t iter = 0;
    std::cout << "Выявлен радиус окружности: " << rad << '\n';
    std::cout << std::endl;
    std::cout << "Выявлены несколько точек 1-го и 2-го множеств, охватываемых окружностью: \n";
    for(i = 0; i < 4 * m; ++i)
    {
        if((sqrt((pow((spaces[i].x1 - xCentre), 2)) + (pow((spaces[i].y1 - yCentre), 2))) < rad) 
            && (sqrt((pow((spaces[i].x2 - xCentre), 2)) + (pow((spaces[i].y2 - yCentre), 2))) < rad))
        {
            std::cout << "точка с координатами \t(" << spaces[i].x1 << ", " << spaces[i].y1 
                << ")\t принадлежит 1-му множеству\n";
            std::cout << "точка с координатами \t(" << spaces[i].x2 << ", " << spaces[i].y2
                << ")\t принадлежит 2-му множеству\n";
            ++iter;
        }
        if(iter > 3) 
            break;
    }
    std::cout << std::endl;
}


Вернуться к обсуждению:
Геометрия в С++.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.04.2010, 23:42
Готовые ответы и решения:

Геометрия
Нужна помощь с 12, если можно с объяснениями. Заранее спасибо.

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

Геометрия
Г Е О М Е Т Р И Ч Е С К И Е З А Д А Ч И -&gt; Здесь выкладываем условия и/или решения...

геометрия
Решите пожалуйста, ребят ( Решить задачу, используя структуру point для хранения координат точки:...

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