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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ класс полиномы http://www.cyberforum.ru/cpp-beginners/thread1004004.html
функция сложения работает неправильно когда складываются отрицательные числа и еще функция деления вообщене работает, подскажите в чем ошибка ? // polinom.cpp: определяет точку входа для консольного приложения. // //#include <stdafx.h> #include <iostream> #include <cstring> #include <cstdlib> using namespace std; class Polinom {
C++ Определите: сколько раз температура была выше нуля Привет всем!! У меня есть не большая проблемка! Вот суть её: В текстовом файле записаны результаты измерения температуры воздуха, которые проводились ежедневно в течение декабря. Определите: сколько раз температура была выше нуля. Я не знаю, как правильно записать условие!! вот код мой,то есть часть его #include <iostream> #include <cstdlib> http://www.cyberforum.ru/cpp-beginners/thread1004001.html
C++ Проверка строки
Я написал "мини игру". Смысл отгадать число. Человек вводит знак сравнения (>, < или =) и любое число, а комп отвечает "Да, верно" или "Нет, не верно". Например, загадано число 5. Человек вводит "<10", тоесть загаданное число меньше 10 и комп должен ответить "Да, верно". Ну так должно быть... Проблема в том, чтобы рассортировать все по своим местам. Знак сравнения отправить на свою проверку, а...
Общие элементы двух массивов записать в один 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; // потому что n=5? а ведь мне нужно только общие элем } } cout<<c<<" "; // как правильно вывести c? }
C++ Builder Сформировать третью матрицу порядка 2N http://www.cyberforum.ru/cpp-beginners/thread1003998.html
Есть две матрицы А и В. Нужно сформировать сформировать третюю матрицу порядка 2N, тоесть елементы матрицы А и В умножить на 2N. Вот код, я немогу сделать правильно, не выходит, нужна помощь. //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h"...
C++ Задача на роботу з чергою Реалізувати чергу для зберігання і операцій з даними виду: Ім'я програми Мова програмування Розмір пам'яті, що потребується Час виконання Забезпечити виконання операцій: • виділення місця в пам'яті під чергу; • додавання елементу в чергу; • видалення елементу з черги; • попередження про можливе переповнювання; • повідомлення про переповнювання; • визначення часу виконання всіх програм;... подробнее

Показать сообщение отдельно
xorrer
0 / 0 / 0
Регистрация: 25.02.2013
Сообщений: 23
10.11.2013, 23:46  [ТС]     Из заданного на плоскости множества точек выбрать три различные точки
Само задание звучит так: "Из заданного на плоскости множества точек выбрать три различные точки так,
чтобы разность между площадью круга, ограниченного окружностью, проходящей через эти три точки,
и площадью треугольника с вершинами в этих точках была минимальной "
Плюс все функции при выполнении оформить в виде шаблонов.

Отредактировала то, что было, но в итоге все равно программа выдавала ошибки. А потом еще и оказалось, что нужно делать с меню, поэтому почти полностью переделала программу.

Помогите, пожалуйста, с данными, которые инициализируются в main, а потом передаются в шаблон функции. Совсем запуталась, как только уже не пробовала... Не получается и все. И я просто не понимаю, что делаю не так...

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 <stdlib.h>
#include <math.h>
 
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 = 3.14;
    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;
                
                double /*type*/ r = sqrt( (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;
                
                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>------ Построение начато: проект: happiness, Конфигурация: Debug Win32 ------
1>Компиляция...
1>stdafx.cpp
1>Компиляция...
1>happiness.cpp
1>c:\users\мария\documents\visual studio 2008\projects\happiness\happiness\happiness.cpp(95) : error C2668: sqrt: неоднозначный вызов перегруженной функции
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\math.h(581): может быть 'long double sqrt(long double)'
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\math.h(533): или 'float sqrt(float)'
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\math.h(128): или 'double sqrt(double)'
1> при попытке сопоставить список аргументов '(int)'
1> c:\users\мария\documents\visual studio 2008\projects\happiness\happiness\happiness.cpp(164): см. ссылку на создание экземпляров функции шаблон при компиляции "void func<int>(int,type **,type **)"
1> with
1> [
1> type=int
1> ]
1>c:\users\мария\documents\visual studio 2008\projects\happiness\happiness\happiness.cpp(106) : warning C4244: =: преобразование 'double' в 'int', возможна потеря данных
1>c:\users\мария\documents\visual studio 2008\projects\happiness\happiness\happiness.cpp(108) : warning C4244: =: преобразование 'double' в 'int', возможна потеря данных
1>c:\users\мария\documents\visual studio 2008\projects\happiness\happiness\happiness.cpp(124) : error C2440: инициализация: невозможно преобразовать 'int *' в 'int'
1> Не существует контекста, в котором такое преобразование возможно
1>c:\users\мария\documents\visual studio 2008\projects\happiness\happiness\happiness.cpp(126) : error C2440: =: невозможно преобразовать 'int' в 'int *'
1> Для преобразования из целого типа в указатель требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>c:\users\мария\documents\visual studio 2008\projects\happiness\happiness\happiness.cpp(124) : error C2440: инициализация: невозможно преобразовать 'double *' в 'double'
1> Не существует контекста, в котором такое преобразование возможно
1> c:\users\мария\documents\visual studio 2008\projects\happiness\happiness\happiness.cpp(169): см. ссылку на создание экземпляров функции шаблон при компиляции "void func<double>(int,type **,type **)"
1> with
1> [
1> type=double
1> ]
1>c:\users\мария\documents\visual studio 2008\projects\happiness\happiness\happiness.cpp(126) : error C2440: =: невозможно преобразовать 'double' в 'double *'
1>c:\users\мария\documents\visual studio 2008\projects\happiness\happiness\happiness.cpp(105) : warning C4244: =: преобразование 'int' в 'float', возможна потеря данных
1> c:\users\мария\documents\visual studio 2008\projects\happiness\happiness\happiness.cpp(174): см. ссылку на создание экземпляров функции шаблон при компиляции "void func<float>(int,type **,type **)"
1> with
1> [
1> type=float
1> ]
1>c:\users\мария\documents\visual studio 2008\projects\happiness\happiness\happiness.cpp(106) : warning C4244: =: преобразование 'double' в 'float', возможна потеря данных
1>c:\users\мария\documents\visual studio 2008\projects\happiness\happiness\happiness.cpp(108) : warning C4244: =: преобразование 'double' в 'float', возможна потеря данных
1>c:\users\мария\documents\visual studio 2008\projects\happiness\happiness\happiness.cpp(124) : error C2440: инициализация: невозможно преобразовать 'float *' в 'float'
1> Не существует контекста, в котором такое преобразование возможно
1>c:\users\мария\documents\visual studio 2008\projects\happiness\happiness\happiness.cpp(126) : error C2440: =: невозможно преобразовать 'float' в 'float *'
1>Журнал построения был сохранен в "file://c:\Users\Мария\Documents\Visual Studio 2008\Projects\happiness\happiness\Debug\BuildLog.htm"
1>happiness - ошибок 7, предупреждений 5
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
 
Текущее время: 06:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru