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

Из заданного на плоскости множества точек выбрать три различные точки - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ класс полиномы http://www.cyberforum.ru/cpp-beginners/thread1004004.html
функция сложения работает неправильно когда складываются отрицательные числа и еще функция деления вообщене работает, подскажите в чем ошибка ? // polinom.cpp: определяет точку входа для консольного...
C++ Определите: сколько раз температура была выше нуля Привет всем!! У меня есть не большая проблемка! Вот суть её: В текстовом файле записаны результаты измерения температуры воздуха, которые проводились ежедневно в течение декабря. Определите:... http://www.cyberforum.ru/cpp-beginners/thread1004001.html
C++ Проверка строки
Я написал "мини игру". Смысл отгадать число. Человек вводит знак сравнения (>, < или =) и любое число, а комп отвечает "Да, верно" или "Нет, не верно". Например, загадано число 5. Человек вводит...
Общие элементы двух массивов записать в один C++
void search(int a,int b,int c,int n,int m){ for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ if(a==b){ // так выводит массив c с общими элементами и с мусорными знач c=a; //...
C++ Задача на роботу з чергою http://www.cyberforum.ru/cpp-beginners/thread1003997.html
Реалізувати чергу для зберігання і операцій з даними виду: Ім'я програми Мова програмування Розмір пам'яті, що потребується Час виконання Забезпечити виконання операцій: • виділення місця в...
C++ Передача параметров в функцию Функция проверки пересечения прямоугольников: bool Intersects(Rect Obj1, Rect Obj2) { int ax,ay,ax1,ay1,bx,by,bx1,by1; ax = Obj1.ItsUpperLeftGetX(); ay = Obj1.ItsUpperLeftGetY(); ax1 =... подробнее

Показать сообщение отдельно
Max Dark
шКодер самоучка
1840 / 1640 / 597
Регистрация: 09.10.2013
Сообщений: 3,650
Записей в блоге: 6
Завершенные тесты: 2
11.11.2013, 00:20
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
// happiness.cpp: определяет точку входа для консольного приложения.
//
/* каждый пункт в виде шаблона функции
   данные в кач. параметров
   примеры программ, использующих шаблоны для int, float, double
   
   "из заданного на плоскости множества точек выбрать три различные точки так, 
   чтобы разность между площадью круга, ограниченного окружнотью, проходящей через эти три точки, 
   и площадью треугольника с вершинами в этих точках была миимальной"  */
 
/*1) создать массив x,y; создать массив для конечных результатов 1 итерации функции с площадями
2) создать функцию, выбирающую 3 точки и считающую площадь треугольника и площдь круга (полученные результаты записывать в табличку!)
3) создать другую функцию, которая будет выполнять сортировку по площадям, дабы найти минимальную.
+++++
x,y вбиваются пользователем!*/
 
 
//#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cstring>
#include <cstdlib>
#include <cmath>
 
using namespace std;
 
 
template <class type> 
void func (int lstr, type **a1, type **s1)
{
    int i, j;
    type **s = new type*[lstr];
    for ( i = 0; i < lstr; i++){ 
        s[i] = new type[4];
    }
 
    type **a = new type*[lstr];
    for ( i = 0; i < lstr; i++){ 
        a[i] = new type[2];
    }
    
    
    
    cout << "Enter matrix: ";
    
    for ( i = 0; i < lstr; i++) {
        for (j = 0; j < 2; j++) {
            cin >> a[i][j];
        }
        cout << endl;
    }
    
    cout << "  X  " << " | " << "  Y  " << endl;
    cout << endl;
    
    for (i = 0; i < lstr; i++) {
        for (j = 0; j < 2; j++){ 
            cout << setw(4) << a[i][j] << "  ";
        }
        cout << endl;
    }
    
    double const pi = M_PI;
    type x1, x2, x3, y1, y2, y3, ma, mb, x, y;
    
    for (i = 0; i < lstr - 2; i++){
        for (j = i + 1; j < lstr - 1; j++) {
            for (int k = j + 1; k < lstr; k++) {
                x1 = a[i][0];
                y1 = a[i][1];
 
                x2 = a[i+1][0];
                y2 = a[i+1][0];
  
                x3 = a[i+3][0];
                y3 = a[i+3][0];
 
                cout << " P1(x1;y1) =  ( " << x1 << " ; " << y1 << " )" << endl;
                cout << " P2(x2;y2) =  ( " << x2 << " ; " << y2 << " )" << endl;
                cout << " P3(x3;y3) =  ( " << x3 << " ; " << y3 << " )" << endl;
                
                ma = (y1-y2)/(x2-x1);
                mb = (y3-y2)/(x3-x2);
 
                if (mb - ma == 0) {
                    cout << "P1P2 || P2P3 : these points don't form a circle " << endl;
                    break;
                }
 
                x = (ma*mb*(y1-y3)+mb*(x1+x2)-ma*(x2+x3))/2*(mb-ma);
                y = (-1)*(x - (x1+x2)/2)/ma +(y1+y2)/2;
                //cout << "The center O(x;y)" << x << "  " << y << endl;
                
                type r =(type) sqrt(double( (x1-x)*(x1-x) - (y1-y)*(y1-y) ));
                //cout << "The radius " << r << endl;
                
                double /*type*/ SC = pi*r*r;
                //cout << "Square of the circle " << SC << endl;
                
                type ST = ((x1-x3)*(y2-y3) - (x2-x3)*(y1-y3))/2.0;
                
                cout << "  №  " << "|" << " S of circle " << "|" << " S of tringle " << "|" << "   SC - ST  " << endl;
                for (int f = 0; f < lstr; f++){
                    s[f][0] = f;
                    s[f][1] = SC;
                    s[f][3] = ST;
                    s[f][4] = SC - ST;
                }
                
                for (int f = 0; f < lstr; f++) {
                    for (int g = 0; g < 4; g++) {
                        cout << setw(4) << s[f][g] << "  ";
                        cout << endl;
                    }
                }
            }
        } 
    }
 
for (j = lstr-1; j > 0; j--){
        for (i = 0; i < j; i++) {
            if (s[i+1][4] < s[i][4]) {
                type* min = s[i];
                s[i] = s[i+1];
                s[i+1] = min;
            } 
        }
    }
    
    cout << "sorted data" << endl;
    cout << endl;
    cout << "  №  " << "|" << " S of circle " << "|" << " S of tringle " << "|" << "   SC - ST  " << endl;
    
    for (i = 0; i < lstr; i++) {
        for (j = 0; j < 4; j++) {
            cout << setw(4) << s[i][j] << "  ";
        }
        cout << endl;
    }
 
 
} 
 
 
int main()
{
    int lstr;
    cout << "Enter lstr strings" << endl;
    cin >> lstr;
    int x;
 
    while ( x < 4 ){
        cout << "Choose the type of array" << endl;
        cout << "1 - int" << endl;
        cout << "2 - double" << endl;
        cout << "3 - float" << endl;
        cin >> x;
        
        switch(x) 
        {
        case 1: int ** s1;
                int ** a1;
                func ( lstr, a1, s1);
                break;
        
        case 2: double **s2;
                double **a2;
                func ( lstr, a2, s2);
                break;
        
        case 3: float **s3;
                float **a3;
                func ( lstr, a3, s3);
                break;
        }
    }
    
    return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru