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

Найти координаты точек пересечения двух кругов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти все положительные числа, из которых выбрать наименьшее http://www.cyberforum.ru/cpp-beginners/thread752008.html
Пусть a=\frac{i-1}{i+1}+\sin \frac{{(i-1)}^{3}}{i+1},i=1,2... Дано натуральное число n. Среди a,a,...,a найти все положительные числа, из которых выбрать наименьшее. помогите пожалуйста!
C++ Методом обхода в глубину определить число компонент связности и цикломатическое число графа Методом обхода в глубину определить число компонент связности и цикломатическое число графа – минимальное число ребер, которые надо удалить, чтобы граф стал ациклическим. Способ представления графа - матрица смежности. Подскажите, пожалуйста, является ли написанный мной способ поиска числа компонент связности поиском в глубину? Если нет, то подскажите, что требуется изменить. #include... http://www.cyberforum.ru/cpp-beginners/thread751988.html
Разработать приложение, позволяющее организовать работу по учету занятости номеров гостиницы C++
Всем доброго времени суток! Решила сама начать осваивать С++ до поступления в институт, где изучение этого языка программирования обязательно будет. Уже начала неплохо разбираться в некоторых вещах, но одно остается для меня дремучим лесом: работа с файлами. Мне было предложено разработать приложение, позволяющее организовать работу по учету занятости номеров гостиницы. Так вот, всю ту кучу,...
C++ Как задать кодировку при записи в файл или чтения из него
У меня блокнот Notepad++, своей программой я записываю в некоторый текстовый файл все символы ASCII. Проблема вот в чем: программа отображает символы правильно, а блокнот крякозябры. Если я меняю кодировку в блокноте на такую, что он все нормально показывает, то моя программа открывает этот файл с другими символами запись: ofstream my ("1.txt"); char a; for (int i = 0; i <...
C++ Не работает подсчет суммы введенных чисел http://www.cyberforum.ru/cpp-beginners/thread751930.html
#include <iostream> using namespace std; int main() { std::cout << 'Enter two numbers' << std::endl; int v1, v2; std::cin >> v1 >> v2; std::cout << 'The summ of' << v1 << 'and' << v2 << 'is' << v1 + v2 << std::endl; return 0;
C++ Видео лекции: Основы C++ На просторах интернета нашел замечательный ресурс как lektorium.tv Мне понравились предоставленные азы в этих видео лекциях, которые в большинстве ВУЗов не даются. Список тем: Эффективная работа с памятью. Объектно-ориентированное программирование на примере языка C . Обобщенное программирование на примере языка C . STL. Дополнительная литература: подробнее

Показать сообщение отдельно
TheVlad
5 / 5 / 1
Регистрация: 24.10.2012
Сообщений: 102
26.01.2013, 23:54  [ТС]     Найти координаты точек пересечения двух кругов
Цитата Сообщение от Nixy Посмотреть сообщение
если менять на плавуюшую запятую то нужна определенная точность, так как при этом у нас в мантисе числа всегда есть мусор и в общем случае два числа с плавающей запятой не равны друг другу даже если при подсчете должны были бы быть

Добавлено через 6 минут
так же придется перебирать точки с заданой точностью, это сильно скажется на скорости программы

Добавлено через 29 минут
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
#include <iostream>
#include <cmath>
#include <Windows.h>
#include <vector>
 
 using namespace std;
 
 const double epsilon = 1E-2;
 
 void lines(int, char []);
 
 struct point
 {
     point( double x_,double y_) { x = x_; y = y_;};
     double x;
     double y;
 };
 
 bool inCircle(point O,point p,double R)
 {
    return abs(pow((O.x-p.x),2)+pow((O.y-p.y),2) - R*R) <= epsilon  ? true : false;
 }
 
 int main()
 {
     setlocale(0,"");
     point O1(0,0), O2(0,0);
     float R1, R2, d;
     vector <point> arr;
 
     cout<<"Введiть координать центра 1-го кола:"<<endl;
     cout<<"x=";
     cin>>O1.x;
     cout<<"y=";
     cin>>O1.y ;
     lines(40,"-");
     cout<<"Введiть координать центра 2-го кола:"<<endl;
     cout<<"x=";
     cin>>O2.x;
     cout<<"y=";
     cin>>O2.y;
     lines(40,"-");
     cout<<"Введiть радiуси двох кiл(1-го та 2-го):"<<endl;
     cout<<"R1=";
     cin>>R1;
     cout<<"R2=";
     cin>>R2;
 
     d = sqrt(pow((O1.x - O2.x),2)+pow((O1.y - O2.y),2));
 
     lines(40,"-");
    if((R1 - R2) < d && d <(R1 + R2))
    {
     for (double x = O1.x-R1 < O2.x-R2 ? O1.x-R1 : O2.x-R2,
              endx =O1.x+R1 > O2.x+R2 ? O1.x+R1 : O2.x+R2;
              x < endx  ; x+=epsilon)
     {
        for (double y = O1.y-R1 < O2.y-R2 ? O1.y-R1 : O2.y-R2,
                 endy = O1.y+R1 > O2.y+R2 ? O1.y+R1 : O2.y+R2  ;
              y < endy ; y+=epsilon)
        {
             if (inCircle(O1,point(x,y),R1) & inCircle(O2,point(x,y),R2))
             {
                arr.push_back(point(x,y));
             }
        }
     }
 
     for (int i = 0; i < arr.size();)
     {
       for (int j = 0; (j < 5 & i < arr.size()) ; j++ ,i++)
       {
            cout << "("<< arr[i].x << ";" <<arr[i].y << ")\t";
       }
       cout << endl;
     }
    }
    else cout<<"Кола не перетинаються!\n";
     system("pause");
     return 0;
 }
 
void lines(int x, char p[])
{
    for(int i = 0; i < x; i++)
    {
        cout<<p;
    }
    cout<<endl;
}
спасибо большое, в даном случае скорость мне не очень важна...
 
Текущее время: 16:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru