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

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

Восстановить пароль Регистрация
 
sanyachel9binsk
1 / 1 / 0
Регистрация: 27.10.2012
Сообщений: 209
06.03.2013, 21:12     Выяснить взамное расположение #1
Здравствуйте, дорогие форумчане.
------------------------------------
Помогите, пожалуйста, написать программу. Заранее благодарен.
Вот само задание:
Выяснить взаимное расположение круга и круга.
-------------------
Заранее благодарен.
Значений никаких нет, поэтому, если надо, то можно задавать свои.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
instagib
122 / 85 / 3
Регистрация: 14.02.2011
Сообщений: 341
06.03.2013, 21:27     Выяснить взамное расположение #2
sanyachel9binsk, я лично не понимаю задания.
sanyachel9binsk
1 / 1 / 0
Регистрация: 27.10.2012
Сообщений: 209
06.03.2013, 21:51  [ТС]     Выяснить взамное расположение #3
Цитата Сообщение от instagib Посмотреть сообщение
sanyachel9binsk, я лично не понимаю задания.
Ну даны два круга. Надо выяснить их взаимное расположение.
Миниатюры
Выяснить взамное расположение  
instagib
122 / 85 / 3
Регистрация: 14.02.2011
Сообщений: 341
06.03.2013, 21:53     Выяснить взамное расположение #4
sanyachel9binsk, ну относительно чего выяснять? центров окружности? растояние? относительно осей?
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.
Кто сможет на С++ переписать? Или подсказать, если у меня не правильно? За ранее благодарен.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 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('Окружность внутри друг друга');
ты вообще о кругах начинал разговор.
теперь у тебя окружности...
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 секунды
А на С++ можно полный код тогда?
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
07.03.2013, 19:09     Выяснить взамное расположение #8
Цитата Сообщение от sanyachel9binsk Посмотреть сообщение
Ну в моем понимании - это тоже круг.
в пятый класс церковно-приходской школы!
круги, находящиеся друг внутри друга, пересекаются, описывающие их окружности НЕТ.
так что определяйся. разница есть.
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.
--------------------
Это я на паскале написал... Если что не правильно - подскажите, а лучше всего исправьте... Вообщем жду кода на С++. Заранее благодарен.
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;
}
Если формулы все верные, то все ок, должно работать правильно. Прогони тесты на каждый случай.
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();
}
vyachesmine
7 / 7 / 1
Регистрация: 19.02.2013
Сообщений: 22
10.03.2013, 14:45     Выяснить взамное расположение #12
sanyachel9binsk, зачем такое обилие if-else?? Усложняешь...
sanyachel9binsk
1 / 1 / 0
Регистрация: 27.10.2012
Сообщений: 209
10.03.2013, 20:20  [ТС]     Выяснить взамное расположение #13
Цитата Сообщение от vyachesmine Посмотреть сообщение
sanyachel9binsk, зачем такое обилие if-else?? Усложняешь...
А как тут тогда объединить это все в одно условие?
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 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){
         /*Одна куча к. на двоих*/
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2013, 21:15     Выяснить взамное расположение
Еще ссылки по теме:

C++ Расположение файлов
Расположение буквы ё в Unicode C++
C++ C++ Выяснить взаимное расположение прямых на плоскости

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

Или воспользуйтесь поиском по форуму:
sanyachel9binsk
1 / 1 / 0
Регистрация: 27.10.2012
Сообщений: 209
11.03.2013, 21:15  [ТС]     Выяснить взамное расположение #15
Просто я там двойное условие делал.
Yandex
Объявления
11.03.2013, 21:15     Выяснить взамное расположение
Ответ Создать тему
Опции темы

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