Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
wlad1234
2 / 2 / 0
Регистрация: 08.10.2014
Сообщений: 62
1

Определить радиус и центр окружности

11.05.2016, 16:44. Просмотров 328. Ответов 0
Метки нет (Все метки)

Всем привет! Помогите пожалуйста исправить ошибки в коде, а то я чет уже не пойму(описание задачи внутри):
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
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <math.h>
/**
       Определить радиус и центр окружности, проходящей, по крайней мере, через три различные точки заданного множества точек на плоскости
       и содержащей внутри наибольшее количество точек этого множества.
       **/
typedef struct {double x;double y;} point;
typedef struct {point o;double r;} okruz;
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    point mass;
    mass t;
    void Tochki(mass t,int n);
    int prin(point a,okruz ok);
    okruz ok;
    int n,i,j,k,l,k1,k2,mn,vn,nr;
    double r,x,y;
    Tochki(t,n);
    mn=n;
    r=0;
    x=0;
    y=0;
    for (i=0;i<n-2;i++)
    {
        for (j=i+1;j<n-1;j++)
        {
            for (k=j+1;k<n;k++)
            {
                okr(t[i],t[j],t[k],ok);
                k1=0;
                k2=0;
                for (l=0;l<n;l++)
                {
                    if (prin(t[l],ok)==1)
                        k1++; ///считаем внутри
                        else
                            k2=k2+1;///снаружи
                    if (abs(k1-k2)<mn) ///если разность меньше, запоминаем все параметры
                        {
                            mn=abs(k1-k2);
                            r=ok.r;
                            x=ok.o.x;
                            y=ok.o.y;
                            vn=k1;
                            nr=k2-3;
                        }
                }
 
            }
        }
    }
printf("Окружность: координаты центра x0=%lf",x,"Y0=%lf",y,"R=%lf",r);
printf("Внутри точек=%d",vn,"снаружи=%d",nr);
return 0;
}
void Tochki(mass t,int n)
{
    printf("Введите желаемое количество точек от 3-х до 50: ");
    scanf("%d",&n);
    for (i=0;i<n;i++)
    {
        t[i].x=rand()%10;
        t[i].y=rand()%10;
    }
    for (i=0;i<n;i++)
    {
        printf("X : %lf\n",arr[i].x);
    }
    for (i=0;i<n;i++)
    {
        printf("Y : %lf\n",arr[i].x);
    }
}
void okr(point t1,point t2,point t3,okruz ok)
{
    double a,b,x,y,k0,k1,k2,m0,m1,m2,e=0.01;
    k0=(t1.x)*(t1.x)-(t2.x)*(t2.x)+(t1.y)*(t1.y)-(t2.y)*(t2.y);
    k1=2*(t1.y-t2.y);
    k2=2*(t1.x-t2.x);
    m0=(t1.x)*(t1.x)-(t3.x)*(t3.x)+(t1.y)*(t1.y)-(t3.y)*(t3.y);
    m1=2*(t1.y-t3.y);
    m2=2*(t1.x-t3.x);
    a=k2*m0-k0*m2;
    b=k2*m1-k1*m2;
    if (b==0)
        exit(1);
    y=a/b;
    ok.o.y=y;
    if (abs(m2)>e)
        x=(m0-y*m1)/m2;
    else if (abs(k2)>e)
        x=(k0-y*k1)/k2;
    else
        exit(1);
    ok.o.x=x;
    ok.r=sqrt((t1.x-x)*(t1.x-x)+(t1.y-y)*(t1.y-y));
    }
int prin(point a,okruz ok)
{
    double e=0.01;
    if ((((a.x-ok.o.x)*(a.x-ok.o.x)+(a.y-ok.o.y)*(a.y-ok.o.y))-(ok.r)*(ok.r))<(-e))
        return 1;
    else
        return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2016, 16:44
Ответы с готовыми решениями:

Найти центр и радиус окружности
Заданы 4 точки на плоскости. Определить лежит ли последняя точка внутри окружности, проходящей...

Даны два множества точек на плоскости. Найти центр и радиус окружности
Даны два множества точек на плоскости. Найти центр и радиус окружности, проходящей через K (K &gt;=3)...

Пределить радиус и центр окружности, проходящей, по крайней мере, через три различные точки
Здравствуйте помогите пожалуйста над задачей бьюсь уже больше 2-х недель а толку 0 :-( Суть...

Считать радиус и выдать на печать диаметр окружности, радиус и площадь
Здравствуйте, уважаемые! Начал изучать язык С и столкнулся с задачей такой. //Напишите программу,...

Радиус вписанной окружности
Описать функцию R(a,b,c), определяющую радиус вписанной окружности для треугольника со сторонами...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2016, 16:44

Найти радиус окружности и площадь круга, ограниченного этой окружностью
Дана длина L окружности. Найти ее радиус R и площадь S круга, ограниченного этой окружностью. В...

Напишите программу, считывающую радус и выдающую на печать диаметр окружности, радиус и площадь. Используйте величину дл
Здравствуйте, уважаемые! Начал изучать язык С и столкнулся с задачей такой. //Напишите программу,...

Программа вычисляет длину, площадь, диаметр окружности через радиус. Не могу понять, что с ней не так
#include&lt;iostream&gt; #include&lt;conio.h&gt; #include &lt;locale.h&gt; using namespace std; int main() ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru