С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Ch3r3p0sha
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 11
#1

Непересекающиеся окружности - C++

13.10.2009, 12:10. Просмотров 1042. Ответов 7
Метки нет (Все метки)

Окружность на плоскости однозначно может быть определена координатами ее центра (x,y) и радиусом r. Пусть заданы соответствующие характеристики нескольких окружностей: x1, y1, r1; x2, y2, r2 ... xn, yn, rn. Найти среди этих окружностей все уединенные окружности, т.е. такие, которые не имеют общих точек ни с одной из остальных окружностей, не лежат целиком внутри и не заключают в себе какой-либо другой окружности.
Помогите пожалуста решить, на borland C++ через массивы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2009, 12:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Непересекающиеся окружности (C++):

По заданным координатам центра окружности и ее радиусу определить координаты точек пересечения окружности с осями координат. - C++
По заданным координатам центра окружности и ее радиусу определить координаты точек пересечения окружности с осями координат.

Существуют ли в данной строке s две непересекающиеся подстроки "AB" и "BA" - C++
Здравствуйте, есть задача: Дана строка s. Требуется определить, существуют ли в данной строке s две непересекающиеся подстроки "AB" и...

Класс "Окружность" с данными центр и радиус окружности. Вычислить длину и площадь окружности. - C++
Объявить класс и определить для него конструктор по умолчанию, конструктор инициализации. Определить функции-члены класса для ввода и...

Окружности - C++
помогите пож-та: надо составить три окружности разных цветов да еще чтобы они последовательно были соединены(как ауди )) Не...

Рисование окружности - C++
Доброго времени суток. Подскажите пожалуйста алгоритмы которые позволяют нарисовать "гладкую" окружность. Нужно что бы получилось...

две окружности - C++
На плоскости даны две окружности. Ваша задача – найти все их общие точки. Формат входных данных В первой строке входного файла...

7
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
13.10.2009, 18:34 #2
Сдается мне, что ответом может быть несколько.
То есть в общем случае уединенных откружностей может быть несколько вариантов.
0
Nick Alte
Эксперт С++
1642 / 1014 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
13.10.2009, 21:43 #3
Принцип простой - надо найти взаимные расстояния между центрами окружностей. Для N окружностей можно составить массив размером N*N по принципу футбольной таблицы: число в строке I и столбце J - расстояние между центрами окружностей под номерами I и J (на самом деле можно обойтись массивом размером N*(N-1)/2, но будет сложнее находить нужные элементы). Две окружности не имеют общих точек тогда и только тогда, когда расстояние между ними больше суммы их радиусов (d>r1+r2). Окружность будет уединённой, если она не имеет общих точек со всеми другими окружностями (условию удовлетворяют все числа в строке или столбце, соответствующем окружности, с пропуском диагонального элемента, т.е. не сравниваем окружность саму с собой).
0
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
14.10.2009, 12:25 #4
Прочитал условие еще раз.
Требуется найти просто уединенные окружности, а не их набор.
Легко - попарно сравниваем и все.
Можно даже массив не заводить
0
Nick Alte
Эксперт С++
1642 / 1014 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
14.10.2009, 20:42 #5
Цитата Сообщение от odip Посмотреть сообщение
Прочитал условие еще раз.
А если прочитать ещё раз, то можно увидеть, что решать надо как раз-таки с помощью массивов.
0
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
14.10.2009, 22:23 #6
Я имею в виду, что дополнительный массив нет смысла заводить.
А решить через массивы - это значит что xi, yi, ri лежат в трех массивах.
0
Ch3r3p0sha
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 11
08.12.2009, 02:43  [ТС] #7
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h> 
void main()
 {
  int xx[200], yy[200], rr[200],jj[200],f1[200],k,d=0,i,j,n;clrscr();
  printf("Vvedite 4islo okrujnostey: ");scanf("%d",&n);
  randomize();
  for(i=0;i<n;i++)
   {
    xx[i]=100-random(200);
    yy[i]=100-random(200);
    rr[i]=1+random(40);
   }
  for(i=0;i<n;i++)
   {
    for(j=0,k=0;j<n&&k==0;j++)
     {
      if(i==j)j=i+1;
      if (sqrt(pow(xx[i]-xx[j],2)+pow(yy[i]-yy[j],2)) <= (rr[i]+rr[j]))
 k++;
     }
    if(k==0)
     {f1[d]=i;d++;}
   }
  if(d!=0)
   {
    printf("\nUedinennie okrujnosti:");
    for(i=0;i<d;i++)
     printf("\n(%d,%d),%d",xx[f1[i]],yy[f1[i]],rr[f1[i]]);
   }
  else printf("\nUedinennih okrujnostey NET");
  getch();
 }
0
tosha_prog
1 / 1 / 1
Регистрация: 28.01.2016
Сообщений: 11
28.01.2016, 22:21 #8
Вот так надо делать:
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
#include <stdio.h>
#include <stdlib.h>
#include<conio.h>
#include <math.h>
#include<iostream>
#include<iomanip>
 
using namespace std;
 
int main()
{
    int a[200][3], flag, i, j, n;
    //  clrscr();
        printf("Vvedite 4islo okrujnoctey: "); scanf("%d", &n);
        for(i=0; i<=n-1; i++)
        {
            cout<<"Okryjnoctb: "<<i+1<<endl;
            
            cout<<"xx["<<i+1<<"]= ";
            cin>>a[i][0];
 
            cout<<"yy["<<i+1<<"]= ";
            cin>>a[i][1];
            
             cout<<"rr["<<i+1<<"]= ";
             cin>>a[i][2];
       }
                   
for(i=0;i<=n-1;i++)
                  {  flag=1;
                     for(j=0; j<=n-1&&flag; j++)
                              
                              if (i!=j)
                              if (sqrt((a[i][0]-a[j][0])*(a[i][0]-a[j][0])+(a[i][1]-a[j][1])*(a[i][1]-a[j][1]))<=(a[i][2]+a[j][2])) flag=0;
                              
               if (flag) printf("Yedinenaya okpyjnoct %d\n",i+1);
                           
                }
               
 
    
            fflush(stdin);
            getchar();
}
0
28.01.2016, 22:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2016, 22:21
Привет! Вот еще темы с ответами:

Окружности и треугольник! - C++
Даны вещественные числа x1,y1,x2,y2,x3,y3. Каждая пара чисел xi,yi, где i=1,2,3, определяет координаты одной из вершин плоского...

Круги в окружности - C++
Описать переменную круг, в которой содержатся все данные для построения круга в декартовой системе координат. а) Определить координаты...

Координаты окружности в пространстве - C++
Здравствуйте У меня есть задание, построить цилиндр в пространстве Для этого мне нужно сначала узнать координаты точек, которые лежат...

Столкновение окружности с прямоугольником - C++
1) Как определить момент столкновения окружности с прямоугольником? 2) Как отразить направление окружности в момент столкновения с одной...


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

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

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