C/C++
Нужно написать программу вхождения точки в круг, при этом рассмотреть отдельно на границе и за пределами
Я так понимаю нужно использовать формулу расстояния между точками от центра круга до точки.... В формулах в интернете постоянно всплывает что нужно сравнивать это расстояние с квадратом радиуса... Обьясните откуда берется этот квадрат радиуса, разве если круг с радиусом 2 см и центр его в начале координат, при этом точка лежит в координатах 2,0 разве не считается что он на границе??? Ведь если сравнивать с квадратом радиуса то не считается
пи эр квадрат есть площадь круга
#include <iostream>
#include <cmath>
using namespace std;
struct Point {
double x, y;
Point() : x(0), y(0) {}
Point(double x, double y) : x(x), y(y) {}
double length()const {
return sqrt(pow(x, 2) + pow(y, 2));
}
double length(const Point& p)const {
return sqrt(pow(x - p.x, 2) + pow(y - p.y, 2));
}
};
class Circle {
public:
Circle() : r(0) {}
Circle(double r) : r(r) {}
void radius(double value) {
r = value;
}
int position(const Point& p)const {
if (p.length() < r) return 1;
if (p.length() > r) return -1;
return 0;
}
private:
double r;
inline static const auto eps = 1e-15;
};
double real(const char* msg) {
cout << msg;
double value;
cin >> value;
cin.ignore(cin.rdbuf()->in_avail());
return value;
}
Circle circle(const char* msg) {
auto r = real(msg);
return { r };
}
Point point(const char* name) {
cout << name;
auto x = real("X: ");
cout << name;
auto y = real("Y: ");
return { x, y };
}
int main() {
system("chcp 1251 > nul");
auto c = circle("Радиус круга: ");
auto p = point("Координта точки ");
auto x = c.position(p);
if (x > 0) puts("Внутри круга");
else if (x < 0) puts("За пределами круга");
else puts("На границе круга");
system("pause > nul");
}
#include <cmath>
using namespace std;
struct Point {
double x, y;
Point() : x(0), y(0) {}
Point(double x, double y) : x(x), y(y) {}
double length()const {
return sqrt(pow(x, 2) + pow(y, 2));
}
double length(const Point& p)const {
return sqrt(pow(x - p.x, 2) + pow(y - p.y, 2));
}
};
class Circle {
public:
Circle() : r(0) {}
Circle(double r) : r(r) {}
void radius(double value) {
r = value;
}
int position(const Point& p)const {
if (p.length() < r) return 1;
if (p.length() > r) return -1;
return 0;
}
private:
double r;
inline static const auto eps = 1e-15;
};
double real(const char* msg) {
cout << msg;
double value;
cin >> value;
cin.ignore(cin.rdbuf()->in_avail());
return value;
}
Circle circle(const char* msg) {
auto r = real(msg);
return { r };
}
Point point(const char* name) {
cout << name;
auto x = real("X: ");
cout << name;
auto y = real("Y: ");
return { x, y };
}
int main() {
system("chcp 1251 > nul");
auto c = circle("Радиус круга: ");
auto p = point("Координта точки ");
auto x = c.position(p);
if (x > 0) puts("Внутри круга");
else if (x < 0) puts("За пределами круга");
else puts("На границе круга");
system("pause > nul");
}
а если 2,1
гипотенузу можно поискать - если (х квадрат + y квадрат) > радиус квадрат, то за пределами круга
гипотенузу можно поискать - если (х квадрат + y квадрат) > радиус квадрат, то за пределами круга
Александр Чуклин
это чисто во избежание корня?
если круг с центром в начале координат, то сравниваеся
x*x + y*y и r*r
идея в том, чтобы корешок не извлекать лишний раз, а сравнивать квадраты
x*x + y*y и r*r
идея в том, чтобы корешок не извлекать лишний раз, а сравнивать квадраты
Александр Чуклин
то-есть это чисто во избежание корня?
len = sqrt(point.x^2+point.y^2)
if radius > len then print('точка внутри круга')
elseif radius = len then print('точка на границе')
else print('точка за пределами круга')
end
теорема Пифагора называется
if radius > len then print('точка внутри круга')
elseif radius = len then print('точка на границе')
else print('точка за пределами круга')
end
теорема Пифагора называется
Похожие вопросы
- Нужно написать программу с вложенным циклом
- Нужно написать программу на языке C++
- Массивы c++, нужно написать программу
- Помогите, пожалуйста, нужно написать программу на C++
- C++ , нужно написать программу с тестом.
- Написать программы на СИ
- Написать программу на языке Си
- Определить находиться ли точка внутри круга, С++
- Помогите написать программу на С++
- Некорректно работает написанная программа