Форум программистов, компьютерный форум 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 =... подробнее

Показать сообщение отдельно
Hoottie_McGOOB
107 / 105 / 5
Регистрация: 04.10.2013
Сообщений: 231
15.11.2013, 08:08
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
#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;
    double const pi = 3.14;
    type x1, x2, x3, y1, y2, y3, x, y;
    double ma, mb;
    
    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;
    }
    
    
    
    for (int ii = 0; ii < lstr - 2; ii++){
        for (int jj = ii + 1; jj < lstr - 1; jj++) {
            for (int kk = jj + 1; kk < lstr; kk++) {
                x1 = a[ii][0];
                y1 = a[ii][1];
 
                x2 = a[jj][0];
                y2 = a[jj][1];
  
                x3 = a[kk][0];
                y3 = a[kk][1];
 
                cout << " P1(x1;y1) =  ( " << x1 << " ; " << y1 << " )" << endl;
                cout << " P2(x2;y2) =  ( " << x2 << " ; " << y2 << " )" << endl;
                cout << " P3(x3;y3) =  ( " << x3 << " ; " << y3 << " )" << endl;
                
                /////////здесь будет ошибка в расчетах (бесконечность), если в знаменателе будет 0... а он там будет при равенстве x1 и x2 или x2 и x3
                ma = (y2-y1)/(x2-x1);
                cout << "ma" <<  endl; cout <<ma <<endl;
                mb = (y3-y2)/(x3-x2);
                cout << "mb" << mb << endl;
                //////////////
 
                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; // начинаются проблемы!!! проблемы, т.к. ma или mb - бесконечность..
 
                
                type r =(type) sqrt(double( (x1-x)*(x1-x) - (y1-y)*(y1-y) )); 
                cout << "The radius " << r << endl;
                
                double SC = pi*r*r;
                cout << "Square of the circle " << SC << endl;
                
                double 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][2] = ST; //!!!!!!!!! здесь было s[f][3]
                    s[f][3] = SC - ST; //!!!!!!! здесь было s[f][4]
                }
                
                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 q;
 
    do {     
        cout << "Choose the type of array" << endl;
        cout << "1 - int" << endl;
        cout << "2 - double" << endl;
        cout << "3 - float" << endl;
        cin >> q;
        
        switch(q) 
        {
        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;
        }
    } while (q != 4);
    
    
    return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru