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

Найти координаты центра окружности - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как использовать функцию НОРМСТРАСП http://www.cyberforum.ru/cpp-beginners/thread1193306.html
как эту функцию записать в с++ ??
C++ Как избежать округления дробных чисел как сделать что бы не округляло ??? float t; float z,m; using namespace std; void main(void) { m=-pow(5,2)/2; http://www.cyberforum.ru/cpp-beginners/thread1193304.html
C++ Составить функцию, определяющую тождественность двух данных строк
составить функцию, определяющую тождественность двух данных строк помогите пожалуйста!!!
C++ Выбрать машину с наибольшим пробегом
Приветствую вас, уважаемые форумчане. Запускаю одну и ту же программу в CodeBlocks(mingw) и в VS2010, результат разный.. Привожу код программы: #include <iostream> #include <string> #include <stdlib.h> using namespace std;
C++ Формирование матрицы из файла http://www.cyberforum.ru/cpp-beginners/thread1193291.html
Здравствуйте, помогите пожалуйста. Нужно, что бы в программе, матрица вводилась не в ручную, а бралась из фаила. Вот сама программа: #include "stdafx.h" #include <iostream> #include <windows.h> using namespace std; void out(int **a,int n, int m){
Visual C++ Ошибка "не объявлен идентификатор k" выдает ошибку: не объявлен идентификатор k, подскажите как объявить его? // GaussGDlg.cpp : implementation file // #include <stdio.h> #include "stdafx.h" #include "GaussG.h" #include "GaussGDlg.h" подробнее

Показать сообщение отдельно
SKED
0 / 0 / 0
Регистрация: 05.02.2014
Сообщений: 13
30.05.2014, 05:11     Найти координаты центра окружности
Всем привет.
По условию дано множество точек на плоскости. Нужна программа, которая бы находила такие 3 точки, радиус описанной окружности вокруг которой был бы минимален. Т.е. на выходе должно быть значение радиуса, а также центра этой окружности.

Для нахождения радиуса использовалась формула:
Найти координаты центра окружности
Приблизительные координаты центра находятся по формуле:
Xс = (Х1+Х2+Х3) / 3
Yс = (Y1+Y2+Y3) / 3

В общем, радиус получается найти, а те единственные значения координат центра (x0=1, y0=0,67) - нет.
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
#include "stdafx.h"
#include <iostream>
 
const int N=6;
struct TPoint {
    double x, y;
};
 
struct TPoint PS[N]={{0,0},{2,0},{4,1},{4,3},{2,5},{1,2}};
double Dist(TPoint a, TPoint b, TPoint c);
double MinDist(void);
 
int main() {
    double RMin;
    RMin=MinDist();
    printf("R=%6.2f\n", RMin );
    system("pause");
}
 
double Dist(TPoint a, TPoint b, TPoint c){
    double R, x0, y0;
    R=(sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)))*     /*длина стороны 1 треугольника*/
    (sqrt((a.x-c.x)*(a.x-c.x)+(a.y-c.y)*(a.y-c.y)))*       /*длина стороны 2 треугольника*/
    (sqrt((c.x-b.x)*(c.x-b.x)+(c.y-b.y)*(c.y-b.y)))/       /*длина стороны 3 треугольника*/
 
    (sqrt((8*((sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)))+ /*восемь*/
    (sqrt((a.x-c.x)*(a.x-c.x)+(a.y-c.y)*(a.y-c.y)))+           /*умноженное на*/
    (sqrt((c.x-b.x)*(c.x-b.x)+(c.y-b.y)*(c.y-b.y))))*          /*периметр треугольника*/
    
    (((sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)))+    /*полупериметр*/
    (sqrt((a.x-c.x)*(a.x-c.x)+(a.y-c.y)*(a.y-c.y)))+      /*минус*/
    (sqrt((c.x-b.x)*(c.x-b.x)+(c.y-b.y)*(c.y-b.y))))/2-   /*сторона*/ 
    (sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y))))*     /*1*/
 
    (((sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)))+    /*полупериметр*/
    (sqrt((a.x-c.x)*(a.x-c.x)+(a.y-c.y)*(a.y-c.y)))+      /*минус*/
    (sqrt((c.x-b.x)*(c.x-b.x)+(c.y-b.y)*(c.y-b.y))))/2-   /*сторона*/ 
    (sqrt((a.x-c.x)*(a.x-c.x)+(a.y-c.y)*(a.y-c.y))))*     /*2*/
 
    (((sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)))+    /*полупериметр*/
    (sqrt((a.x-c.x)*(a.x-c.x)+(a.y-c.y)*(a.y-c.y)))+      /*минус*/
    (sqrt((c.x-b.x)*(c.x-b.x)+(c.y-b.y)*(c.y-b.y))))/2-   /*сторона*/
    (sqrt((c.x-b.x)*(c.x-b.x)+(c.y-b.y)*(c.y-b.y)))))));  /*3*/
    x0=(a.x+b.x+c.x)/3;
    y0=(a.y+b.y+c.y)/3;
    printf("x0=%6.2f y0=%6.2f\n", x0, y0);
    return R;
}
double MinDist(void) {
    int i, j, k;
    double r, RMin;
    RMin=Dist(PS[0],PS[1],PS[2]);
    for (i=0;i<N-2;i++)
        for (j=i+1;j<N-1;j++)
            for (k=i+2; k<N; k++){
            r=Dist(PS[i],PS[j],PS[k]);
            if (r<RMin) {
                RMin=r;
            }
        }
    return RMin;
}
Найти координаты центра окружности

Что-то картинки не вставляются.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru