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

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

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

Выяснить взамное расположение - C++

06.03.2013, 21:12. Просмотров 549. Ответов 14
Метки нет (Все метки)

Здравствуйте, дорогие форумчане.
------------------------------------
Помогите, пожалуйста, написать программу. Заранее благодарен.
Вот само задание:
Выяснить взаимное расположение круга и круга.
-------------------
Заранее благодарен.
Значений никаких нет, поэтому, если надо, то можно задавать свои.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2013, 21:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выяснить взамное расположение (C++):

Выяснить взаимное расположение прямых на плоскости - C++
Выяснить взаимное расположение прямых А1*х+В1*у=С1 и А*х+В*у=С. Если прямые пересекаются, напечатать точки пересечения. (помогите ребят,...

Выяснить можно ли с поля (k,l) одним ходом ферьзя попасть на поле(m,n). Если нет, то выяснить, как это можно сделать за два хода - C++
Поле шахмотной доски определяеся парой натуральных чисел, каждая из которых не превосходит восьми: первое число номер вертикали (при счете...

Расположение файлов - C++
Здравствуйте, я скачал библиотеку opencv. Мне нужно написать алгоритм распознавания лиц и глаз. Алгоритмов в интернете предостаточно,...

Расположение буквы ё в Unicode - C++
Почему буква ё в таблице Unicode идет не по алфавиту?

Расположение консольной программы - C++
Как программно узнать расположение КОНСОЛЬНОЙ исполняемой программы? В гугле только оконные приложения

Динамическое расположение файла - C++
Добрый день, Возникла такая необходимость: Есть задача на считывание файла и работы с данными, но местоположение файла и имя...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
instagib
122 / 85 / 3
Регистрация: 14.02.2011
Сообщений: 340
06.03.2013, 21:27 #2
sanyachel9binsk, я лично не понимаю задания.
0
sanyachel9binsk
1 / 1 / 0
Регистрация: 27.10.2012
Сообщений: 209
06.03.2013, 21:51  [ТС] #3
Цитата Сообщение от instagib Посмотреть сообщение
sanyachel9binsk, я лично не понимаю задания.
Ну даны два круга. Надо выяснить их взаимное расположение.
0
Миниатюры
Выяснить взамное расположение  
instagib
122 / 85 / 3
Регистрация: 14.02.2011
Сообщений: 340
06.03.2013, 21:53 #4
sanyachel9binsk, ну относительно чего выяснять? центров окружности? растояние? относительно осей?
0
sanyachel9binsk
1 / 1 / 0
Регистрация: 27.10.2012
Сообщений: 209
07.03.2013, 18:46  [ТС] #5
Цитата Сообщение от instagib Посмотреть сообщение
sanyachel9binsk, ну относительно чего выяснять? центров окружности? растояние? относительно осей?
И того, и того, и того. Просто этого не дано было в условии.

Добавлено через 10 минут
Вообщем такое задание в целом:
Даны два круга. Надо выяснить их взаимное расположение относительно центров окружности, растояния, относительно осей.
-----------
Надо написать программу для каждого случая отдельно. Заранее благодарен.

Добавлено через 28 минут
Ну я тут посидел и подумал...
Вообщем на паскале как-то так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
uses crt;
const t=0.01;
var x1,y1,r1,x2,y2,r2,d:real;
begin
clrscr;
writeln('Введите координаты центра и радиус первой окружности:');
readln(x1,y1,r1);
writeln('Введите координаты центра и радиус второй окружности:');
readln(x2,y2,r2);
d:=sqrt(sqr(x1-x2)+sqr(y1-y2));
if d>r1+r2 then write('Окружности отделены')
else if abs(d-(r1+r2))<=t then write('Окружности соприкасаются')
else if d<r1+r2 then
 begin
  if d>r1-r2 then write('Окружности пересекаются')
  else write('Окружность внутри друг друга');
 end;
readln
end.
Кто сможет на С++ переписать? Или подсказать, если у меня не правильно? За ранее благодарен.
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
07.03.2013, 18:50 #6
очевидно, тебе надо знать, пересекаются они или нет

C++
1
bool intersects=((r1+r2)*(r1+r2)>=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
Добавлено через 1 минуту
Цитата Сообщение от sanyachel9binsk Посмотреть сообщение
if d>r1-r2 then write('Окружности пересекаются') else write('Окружность внутри друг друга');
ты вообще о кругах начинал разговор.
теперь у тебя окружности...
0
sanyachel9binsk
1 / 1 / 0
Регистрация: 27.10.2012
Сообщений: 209
07.03.2013, 18:54  [ТС] #7
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
очевидно, тебе надо знать, пересекаются они или нет

C++
1
bool intersects=((r1+r2)*(r1+r2)>=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
Добавлено через 1 минуту

ты вообще о кругах начинал разговор.
теперь у тебя окружности...
Ну в моем понимании - это тоже круг.

Добавлено через 52 секунды
А на С++ можно полный код тогда?
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
07.03.2013, 19:09 #8
Цитата Сообщение от sanyachel9binsk Посмотреть сообщение
Ну в моем понимании - это тоже круг.
в пятый класс церковно-приходской школы!
круги, находящиеся друг внутри друга, пересекаются, описывающие их окружности НЕТ.
так что определяйся. разница есть.
1
sanyachel9binsk
1 / 1 / 0
Регистрация: 27.10.2012
Сообщений: 209
07.03.2013, 20:48  [ТС] #9
Вообщем вот задание:
Даны два круга. Надо выяснить их взаимное расположение относительно центров окружности, расстояния, относительно осей.
Пожалуйста, если сможете, то напишите код на C++. Заранее благодарен.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
uses crt;
const t=0.01;
var x1,y1,r1,x2,y2,r2,d:real;
begin
clrscr;
writeln('Введите координаты центра и радиус первого круга:');
readln(x1,y1,r1);
writeln('Введите координаты центра и радиус второго круга:');
readln(x2,y2,r2);
d:=sqrt(sqr(x1-x2)+sqr(y1-y2));
if d>r1+r2 then write('Круги отделены')
else if abs(d-(r1+r2))<=t then write('Круги соприкасаются')
else if d<r1+r2 then
 begin
  if d>r1-r2 then write('Круги пересекаются')
  else write('Круги внутри друг друга');
 end;
readln
end.
--------------------
Это я на паскале написал... Если что не правильно - подскажите, а лучше всего исправьте... Вообщем жду кода на С++. Заранее благодарен.
0
vyachesmine
7 / 7 / 1
Регистрация: 19.02.2013
Сообщений: 22
07.03.2013, 21:38 #10
sanyachel9binsk, ща перепишу Жди

Добавлено через 35 минут
sanyachel9binsk,
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
#include <iostream.h>
#include <locale.h>
#include <math.h>
#define eps 0.01
struct circle
{
       double x;
       double y;
       double R;
};
int main()
{
    setlocale(0,".1251");
    double d;
    int i;
    circle num[3];
    for (i=1; i<=2; i++)
    {
        cout << "\nÂâåäèòå êîîðäèГ*Г*ГІГ» öåГ*ГІГ°Г* " << i << "-ГЈГ® êðóãГ*:";
        cin >> num[i].x >> num[i].y;
        cout << "\nÂâåäèòå Г°Г*äèóñ " << i << "-ГЈГ® êðóãГ*:";
        cin >> num[i].R;
    }
    d = pow((pow((num[1].x-num[2].x),2) + pow((num[1].y-num[2].y),2)),1/2.0);
    if (d > (num[1].R +num[2].R)) cout << "\nÊðóãè îòäåëåГ*Г».";
    else
    {
        if (fabs(d-(num[1].R + num[2].R) <= eps)) cout << "\nÊðóãè ñîïðèêГ*Г±Г*ГѕГІГ±Гї.";
        if (d > (num[1].R - num[2].R)) cout << "\nÊðóãè ïåðåñåêГ*ГѕГІГ±Гї.";
        else cout << "\nÊðóãè ГўГ*óòðè äðóã äðóãГ*.";
    }
  system("pause");
  return 0;
}
Если формулы все верные, то все ок, должно работать правильно. Прогони тесты на каждый случай.
1
sanyachel9binsk
1 / 1 / 0
Регистрация: 27.10.2012
Сообщений: 209
10.03.2013, 12:37  [ТС] #11
А еще вроде вот так можно будет написать.
Правильно или нет?
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
#include<iostream.h>
#include<math.h>
#include<conio.h>
void main()
{double x1,y1,x2,y2,R1,R2,R,r,AB;
clrscr();
cout<<"vvedite koordinaty i radiys 1-i okr-sti\nx=";
cin>>x1;
cout<<"y=";
cin>>y1;
cout<<"R=";
cin>>R1;
cout<<"vvedite koordinaty i radiys 2-i okr-sti\nx=";
cin>>x2;
cout<<"y=";
cin>>y2;
cout<<"R=";
cin>>R2;
AB=sqrt(pow((x1-x2),2)+pow((y1-y2),2));
if(R1>R2)
    {
     R=R1;r=R2;
     if(AB<R)
          if((R-AB)<r)
             cout<<"okr-sti peresekaiytsua";
          else
               if((R-AB)==r)
               cout<<"men'shaya okr-st' nahoditsya v bol'shei okr-sti i kasaetsya ee";
               else cout<<"men'shaya okr-st' nahoditsya v bol'shei okr-sti";
     else
          if(AB>R)
         if((AB-R)>r)
            cout<<"okr-sti ne peresekautsya i nahodyatsya vne dryg dryga";
         else
            if((AB-R)==r)
               cout<<"okr-sti kasautsya dryg dryga";
            else
             cout<<"okr-sti peresekautsya";
          else
         cout<<"okr peresekautsya";
      }
else
  {
   R=R2;r=R1;
   if(AB<R)
          if((R-AB)<r)
             cout<<"okr-sti peresekaiytsua";
          else
               if((R-AB)==r)
              if (AB==0&&R1==R2) cout<<"okr-sti sovmeschautsya";
              else
              cout<<"men'shaya okr-st' nahoditsya v bol'shei okr-sti i kasaetsya ee";
               else cout<<"men'shaya okr-st' nahoditsya v bol'shei okr-sti";
     else
          if(AB>R)
         if((AB-R)>r)
            cout<<"okr-sti ne peresekautsya i nahodyatsya vne dryg dryga";
         else
            if((AB-R)==r)
               cout<<"okr-sti kasautsya dryg dryga";
            else
             cout<<"okr-sti peresekautsya";
          else
         cout<<"okr peresekautsya";
      }
getch();
}
0
vyachesmine
7 / 7 / 1
Регистрация: 19.02.2013
Сообщений: 22
10.03.2013, 14:45 #12
sanyachel9binsk, зачем такое обилие if-else?? Усложняешь...
0
sanyachel9binsk
1 / 1 / 0
Регистрация: 27.10.2012
Сообщений: 209
10.03.2013, 20:20  [ТС] #13
Цитата Сообщение от vyachesmine Посмотреть сообщение
sanyachel9binsk, зачем такое обилие if-else?? Усложняешь...
А как тут тогда объединить это все в одно условие?
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
10.03.2013, 20:29 #14
Цитата Сообщение от sanyachel9binsk Посмотреть сообщение
А как тут тогда объединить это все в одно условие?
я даже, не вникая в суть вижу, что у тебя код повторяется для всех условий...
А если нет разницы, зачем писать так
C++
1
2
3
4
5
6
7
8
9
10
11
if(R1>R2){
     R=R1;r=R2;
     if(AB<R)
         /*Куча кода*/
      }
else{
   R=R2;r=R1;
   if(AB<R)
   /*АБСОЛЮТНО то же САМОЕ*/
/*вторая куча кода*/
      }
Если можно так
C++
1
2
3
4
5
6
7
8
if(R1>R2){
     R=R1;r=R2;
}else{
   R=R2;r=R1;
}
if(AB<R){
         /*Одна куча к. на двоих*/
}
0
sanyachel9binsk
1 / 1 / 0
Регистрация: 27.10.2012
Сообщений: 209
11.03.2013, 21:15  [ТС] #15
Просто я там двойное условие делал.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2013, 21:15
Привет! Вот еще темы с ответами:

Взаимное расположение линий - C++
Здравствуйте! Не могу реализовать математически взаимное расположение линий. Сама программа заключается в следующем: написать программу...

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

Расположение переменных в памяти - C++
int x; int y; int f; cout&lt;&lt;&amp;x&lt;&lt;' '&lt;&lt;&amp;f; f идет после x(x-&gt;f) int x; int y; int f;

Взаимное расположение прямых - C++
Люди.ПЛЗ помогите::wall::help: Даны вещественные числа A1, B1, C1, А, В, С. Выяснить взаимное расположение прямых A1*x+B1*y=C1 и...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.03.2013, 21:15
Ответ Создать тему
Опции темы

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