Другие языки программирования и технологии

Помогите пожалуйста! нужно написать программу на C++

точки: A,B,C.Определить, какая из двух последних точек (B или C) расположена ближе к A, и вывести эту точку и ее расстояние от точки A. все ответы найденные в инете были с ошибками, от этой задачи зависит судьба моей аттестации =)
#include <iostream>
#include <iomanip>
#include <string>

using namespace std;

struct point_area {
double x;
double y;
};
typedef point_area AREA;

struct point_space {
double x;
double y;
double z;
};
typedef point_space SPACE;

double distance_between(const AREA, const AREA);
double distance_between(const SPACE, const SPACE);

int main() {
wcout.imbue(locale("rus_rus.866"));

wcout << L"\tТочки на плоскости: \n\n";

AREA a, b, c;
double eps = 1e-12;
streamsize signs = 12;
wstring inp(L"Введите координату ");

wcout << inp << L"X точки A: "; cin >> a.x;
wcout << inp << L"Y точки A: "; cin >> a.y;
wcout << inp << L"X точки B: "; cin >> b.x;
wcout << inp << L"Y точки B: "; cin >> b.y;
wcout << inp << L"X точки C: "; cin >> c.x;
wcout << inp << L"Y точки C: "; cin >> c.y;
cout << endl;

double ab = distance_between(a, b);
double ac = distance_between(a, c);

if (fabs(ab - ac) < eps) wcout << L"Точки B и C равноудалены от A";
else if (ab < ac) cout << "B(" << b.x << ", " << b.y << ")" << "; [AB] = " << fixed << setprecision(signs) << ab;
else cout << "C(" << c.x << ", " << c.y << ")" << "; [AC] = " << fixed << setprecision(signs) << ac;
cout << fixed << setprecision(0) << endl << endl;

wcout << L"\tТочки в пространстве: \n\n";

SPACE A, B, C;

wcout << inp << L"X точки A: "; cin >> A.x;
wcout << inp << L"Y точки A: "; cin >> A.y;
wcout << inp << L"Z точки A: "; cin >> A.z;
wcout << inp << L"X точки B: "; cin >> B.x;
wcout << inp << L"Y точки B: "; cin >> B.y;
wcout << inp << L"Z точки B: "; cin >> B.z;
wcout << inp << L"X точки C: "; cin >> C.x;
wcout << inp << L"Y точки C: "; cin >> C.y;
wcout << inp << L"Z точки C: "; cin >> C.z;
cout << endl;

double AB = distance_between(A, B);
double AC = distance_between(A, C);

if (fabs(AB - AC) < eps) wcout << L"Точки B и C равноудалены от A";
else if (AB < AC) cout << "B(" << B.x << ", " << B.y << ", " << B.z << ")" << "; [AB] = " << fixed << setprecision(signs) << ab;
else cout << "C(" << C.x << ", " << C.y << ", " << C.y << ")" << "; [AC] = " << fixed << setprecision(signs) << ac;
cout << endl;

cin.get(); cin.get();
}
double distance_between(const AREA _coord_1, const AREA _coord_2) {
return sqrt(pow(_coord_2.x - _coord_1.x, 2) + pow(_coord_2.y - _coord_1.y, 2));
}
double distance_between(const SPACE _coord_1, const SPACE _coord_2) {
return sqrt(pow(_coord_2.x - _coord_1.x, 2) + pow(_coord_2.y - _coord_1.y, 2) + pow(_coord_2.z - _coord_1.z, 2));
}
Сергей Саратовцев
Сергей Саратовцев
57 669
Лучший ответ
И в чём сложность, определить расстояние между двумя точками?