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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 42, средняя оценка - 4.74
Protected_fleur
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 77
#1

Написать программу, определяющую радиус и центр окружности, проходящей по крайней мере через три различные точки заданного множества точек - C++

29.06.2011, 15:22. Просмотров 5736. Ответов 56

Надо написать программу на СИ, определяюшую радиус и центр окружности, проходящей по крайней мере через три различные точки заданного множества точек на плоскости и содержащей внутри наибольшее количество точек этого множества. Помогите пожалуйста!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2011, 15:22     Написать программу, определяющую радиус и центр окружности, проходящей по крайней мере через три различные точки заданного множества точек
Посмотрите здесь:
C++ Написать программу, определяющую радиус и центр окружности, проходящей по крайней мере через три различные точки заданного множества точек
C++ Определить радиус и центр окружности минимального радиуса, проходящей хотя бы через три различные точки заданного множества точек на плоскости
Определить радиус и центр окружности минимального радиуса, проходящей хотя бы через три различные точки заданного множества точук на плоскости C++
Найдите центр и радиус окружности, проходящей через три заданные точки на плоскости. C++
C++ Из заданного на плоскости множества точек выбрать три различные точки
C++ Из заданного на плоскости множества точек выбрать три различные точки
Работа С Массивами (Выбрать три различные точки из заданного множества точек на плоскости так...) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Protected_fleur
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 77
02.07.2011, 19:45  [ТС]     Написать программу, определяющую радиус и центр окружности, проходящей по крайней мере через три различные точки заданного множества точек #31
спасибо)))
у меня есть еще вопрос: как сделать, чтоб эта окружность содержала внутри наибольшее количество точек заданного множества??? нужно вроде подсчитать точки внутри и снаружи...но как это сделать???
подскажите пожалуйста
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
02.07.2011, 19:48     Написать программу, определяющую радиус и центр окружности, проходящей по крайней мере через три различные точки заданного множества точек #32
Перебрать все точки, да посчитать, сколько их внутри
Точка (x,y) лежит внутри окружности (x0,y0,R), если (x-x0)²+(y-y0)² < R²
При равенстве точка лежит на окружности. Я бы тоже отнёс ко внутренним для данной задачи.
Protected_fleur
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 77
02.07.2011, 19:49  [ТС]     Написать программу, определяющую радиус и центр окружности, проходящей по крайней мере через три различные точки заданного множества точек #33
точно... Спасибо большое
мне аж жить хочется когда начинаю понимать...
Protected_fleur
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 77
02.07.2011, 21:15  [ТС]     Написать программу, определяющую радиус и центр окружности, проходящей по крайней мере через три различные точки заданного множества точек #34
понять-то поняла... а как это реализовать?
как сделать, чтоб происходил перебор всех точек, после того как получили окружность?
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
int main() {
        int i, j, n, k;
        circle c;
        
        printf("Enter number points( n>2 ): ");
        scanf("%d", &n);
        if(n<=2) { 
        printf("Number points is little");  
        _getch();
        return 0;  }
 
        float ** Points = new  float* [n];
        for (i=0; i<n; i++)
        {
                Points[i]= new float [2];
                printf("Enter pair[%d]:\n x: ", i + 1); 
                scanf("%f", &Points[i][0]);
                printf("y: ");              
                scanf("%f", &Points[i][1]); }
                
        for (i=0; i<n-2; i++)
        for (j=i+1; j<n-1; j++)
        for (k=j+1; k<n; k++)  {
            c = cir(
              Points[i][0], Points[i][1],
              Points[j][0], Points[j][1],
              Points[k][0], Points[k][1] );  }
Protected_fleur
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 77
02.07.2011, 21:18  [ТС]     Написать программу, определяющую радиус и центр окружности, проходящей по крайней мере через три различные точки заданного множества точек #35
как задать этот цикл перебора?
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
02.07.2011, 21:24     Написать программу, определяющую радиус и центр окружности, проходящей по крайней мере через три различные точки заданного множества точек #36
C
1
2
3
for (m=0; m<n; m++)
{
}
Protected_fleur
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 77
02.07.2011, 21:27  [ТС]     Написать программу, определяющую радиус и центр окружности, проходящей по крайней мере через три различные точки заданного множества точек #37
неет...ну это то понятно... я не знаю, как использовать точку центра, вычисленной окружности, когда перебираю точки...как этот цикл засунуть сюда???
C
1
2
3
4
5
6
7
for (i=0; i<n-2; i++)
        for (j=i+1; j<n-1; j++)
        for (k=j+1; k<n; k++)  {
            c = cir(
              Points[i][0], Points[i][1],
              Points[j][0], Points[j][1],
              Points[k][0], Points[k][1] );  }
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
02.07.2011, 21:33     Написать программу, определяющую радиус и центр окружности, проходящей по крайней мере через три различные точки заданного множества точек #38
Что стало с моими ровненькими отступами?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
for (i=0; i<n-2; i++)
  for (j=i+1; j<n-1; j++)
    for (k=j+1; k<n; k++)
    {
      c = circumscribed(
              Points[i][0], Points[i][1],
              Points[j][0], Points[j][1],
              Points[k][0], Points[k][1] );
      for (m=0; m<n; m++)
      {
        // на самом деле сравнивать надо не гипотенузу и радиус,
        // а сумму квадратов разностей и квадрат радиуса, но мне лень :)
        if (hypot(Points[m][0]-c.x, Points[m][1]-c.y) <= c.r)
        {
          // внутри
        }
        else
        {
          // снаружи
        }
      }
    }
Protected_fleur
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 77
02.07.2011, 21:40  [ТС]     Написать программу, определяющую радиус и центр окружности, проходящей по крайней мере через три различные точки заданного множества точек #39
а ну насчет отступов это да...проблема препод вечно ворчит блин, ну мне так удобно...
а за цикл спасибо, надеюсь доделаю эту прогу наконец-то...
grizlik78
02.07.2011, 21:44
  #40

Не по теме:

Цитата Сообщение от Protected_fleur Посмотреть сообщение
а ну насчет отступов это да...проблема препод вечно ворчит блин, ну мне так удобно...
Он не ворчит, он стонет. И это не может быть удобно, потому что это не может быть удобно никогда

Protected_fleur
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 77
02.07.2011, 22:42  [ТС]     Написать программу, определяющую радиус и центр окружности, проходящей по крайней мере через три различные точки заданного множества точек #41
возможно, и я, когда стану опытным программистом, буду стонать, когда увижу свои отступы...

Добавлено через 53 минуты
Как всегда на чем-нибудь да спотыкаюсь...
Как мне сделать так, чтоб находилась окружность с наибольшим количеством точек внутри???
Я вот тут сделала, чтоб просто считал точки внутри... и то по-моему что-то не так...
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
int main() {
        int i, j, n, k, m, t=0, t1=0;
        circle c;
        
        printf("Enter number points( n>2 ): ");
        scanf("%d", &n);
        if(n<=2) { 
        printf("Number points is little");  
        _getch();
        return 0;  }
 
        float ** Points = new  float* [n];
        for (i=0; i<n; i++)
        {
                Points[i]= new float [2];
                printf("Enter pair[%d]:\n x: ", i + 1); 
                scanf("%f", &Points[i][0]);
                printf("y: ");              
                scanf("%f", &Points[i][1]); }
                
        for (i=0; i<n-2; i++)
        for (j=i+1; j<n-1; j++)
        for (k=j+1; k<n; k++)  {
            c = cir(
              Points[i][0], Points[i][1],
              Points[j][0], Points[j][1],
              Points[k][0], Points[k][1] ); 
              //проверка точек
        for (m=0; m<n; m++) {
        if ((Points[m][0]-c.x)*(Points[m][0]-c.x) + (Points[m][1]-c.y)*(Points[m][1]-c.y) <= c.r*c.r) t++;
        }
        if (t>t1)
        {
                  t1=t;
                  }  }
              
    printf("Center: (%g, %g)\n", c.x, c.y);
    printf("Radius: %g\n", c.r);
    printf("points inside: %d",t1);
        
        _getch();
        return 0;  }
помогите пожалуйста...
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
02.07.2011, 22:44     Написать программу, определяющую радиус и центр окружности, проходящей по крайней мере через три различные точки заданного множества точек #42
Да, что-то не так. Переменная t обнуляется только вначале, а дальше только растёт. А ведь она считает точки внутри каждой окружности.
Protected_fleur
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 77
03.07.2011, 13:31  [ТС]     Написать программу, определяющую радиус и центр окружности, проходящей по крайней мере через три различные точки заданного множества точек #43
вроде с подсчетом точек внутри разобралась...
А вот как теперь сделать, чтоб выбиралась окружность с наибольшим количеством точек внутри???
Помогите пожалуйста!
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
int main() {
        int i, j, n, k, m, t1=0,t;
        circle c;
        
        printf("Enter number points( n>2 ): ");
        scanf("%d", &n);
        if(n<=2) { 
        printf("Number points is little");  
        _getch();
        return 0;  }
 
        float ** Points = new  float* [n];
        for (i=0; i<n; i++)
        {
                Points[i]= new float [2];
                printf("Enter pair[%d]:\n x: ", i + 1); 
                scanf("%f", &Points[i][0]);
                printf("y: ");              
                scanf("%f", &Points[i][1]); }
                
        for (i=0; i<n-2; i++)
        for (j=i+1; j<n-1; j++)
        for (k=j+1; k<n; k++)  {
            c = cir(
              Points[i][0], Points[i][1],
              Points[j][0], Points[j][1],
              Points[k][0], Points[k][1] ); 
             //проверка точек
        t=0;
        for (m=0; m<n; m++) 
        {
        if ((Points[m][0]-c.x)*(Points[m][0]-c.x) + (Points[m][1]-c.y)*(Points[m][1]-c.y) <= c.r*c.r) t++;
        }
        if (t>t1)
        {
                  t1=t;
                  }  }
    printf("Center: (%g, %g)\n", c.x, c.y);
    printf("Radius: %g\n", c.r);
    printf("points inside: %d",t1);
        
        _getch();
        return 0;  }
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
03.07.2011, 13:34     Написать программу, определяющую радиус и центр окружности, проходящей по крайней мере через три различные точки заданного множества точек #44
Вот там, где t1=t можно сохранять в отдельных переменных и окружность, и точки, по которым она построена.
После циклов вывести.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2011, 14:00     Написать программу, определяющую радиус и центр окружности, проходящей по крайней мере через три различные точки заданного множества точек
Еще ссылки по теме:
C++ Написать программу, определяющую наклон прямой, проходящей через две заданные точки
C++ Найти минимальный радиус шара, который будет охватывать все заданные точки(центр окружности лежит на одной из заданных точек)
C++ Из заданного множества точек на плоскости выбрать две различные точки
Из заданного множества точек на плоскости выбрать две различные точки так C++
Задать массив точек, и определить радиус и центр окружности, на которой лежит наибольшее число точек C++

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

Или воспользуйтесь поиском по форуму:
Protected_fleur
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 77
03.07.2011, 14:00  [ТС]     Написать программу, определяющую радиус и центр окружности, проходящей по крайней мере через три различные точки заданного множества точек #45
Цитата Сообщение от grizlik78 Посмотреть сообщение
Вот там, где t1=t можно сохранять в отдельных переменных и окружность, и точки, по которым она построена.
После циклов вывести.
блин((( как это сделать???
нужно будет еще один цикл для того, чтоб наибольшее количество точек внутри находил?
Yandex
Объявления
03.07.2011, 14:00     Написать программу, определяющую радиус и центр окружности, проходящей по крайней мере через три различные точки заданного множества точек
Ответ Создать тему
Опции темы

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