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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ вопрос про new из с++ за 21 день http://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 http://www.cyberforum.ru/cpp-beginners/thread108523.html
C++ Работа со структурами: ошибка "Declaration terminated incorrectly"
прога набрана но при запуске вылетает ошибка : E2040 Declaration terminated incorrectly вот сама программа : #include <stdio.h> #include <conio.h> const int n=2; typedef struct
Дана строка, содержащая текст, заканчивающийся точкой. Вывести на экран слова, содержащие три буквы. C++
Дана строка, содержащая текст, заканчивающийся точкой. Вывести на экран слова, содержащие три буквы.
C++ рюкзак с элементами http://www.cyberforum.ru/cpp-beginners/thread108492.html
Очень нужна помощь....нужно реализовать алгоритм решения задачи о рюкзаке с названием Meet-In-The-Middle на С++.....вот я псевдокод прикинул а на языке не получается сделать 1. Input: множество натуральных чисел {a1, ... , an} и натуральное число s 2. Output: e принадлежит множеству {0,1}, 1<i<n, такие, что сумма e*a = s3. 3. Положить t = n/2 4. Создать таблицу(сумма e*a...
C++ Последовательность Фибоначчи для строк #include <conio.h> using namespace std; // переменные char *Ptr; char a, b, c; int i,n; // основная функция int main () { cout << "Vvedite n: \n"; подробнее

Показать сообщение отдельно
Lаmer
7 / 7 / 4
Регистрация: 24.03.2010
Сообщений: 25
10.04.2010, 23:42  [ТС]     Геометрия в С++.
В задании опечатка не "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;
}
 
Текущее время: 07:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru