程序一自己已经写出来了,如何改进为程序二

main.h
#pragma once
#include
#include
double i[6] = {};
using namespace std;
void Input(double* pa);
void Check(double*pa);
double Aera(double a,double b,double c);
double a;
double b;
double c;
double x1, x2, x3,d,e,f;

main.cpp
#include"main.h"
int main()
{

double* pa = i;
  Input(pa);
Check(pa);
cout<<"所求面积为"<<Aera(a, b, c)<<endl;
return 0;

}
void Input(double *pa)
{

cout << "请输入第一个点的坐标:";
cin >> x1 >> d;
    cout << "请输入第二个点的坐标:";
cin >> x2 >> e;
cout << "请输入第三个点的坐标:";
cin >> x3 >> f;
*pa = x1;
*( pa + 1) = d;
*(pa + 2) = x2;
*(pa + 3) = e;
*(pa + 4) = x3;
*(pa + 5) = f;

}
void Check(double *pa)
{

c = sqrt((i[0] - i[2]) * (i[0] - i[2]) + (i[1] - i[3]) * (i[1] - i[3]));
b = sqrt((i[2] - i[4]) * (i[2] - i[4]) + (i[3] - i[5]) * (i[3] - i[5]));
a = sqrt((i[0] - i[4]) * (i[0] - i[4]) + (i[1] - i[5]) * (i[1] - i[5]));
if ((a + b > c) && (a + c > b) && (b + c > a)) cout << "能";
else cout << "不能";

}
double Aera(double a, double b, double c)
{
double p;
double s;
p = (1.0 / 2.0) * (a + b + c);
s = sqrt(p * (p - a) * (p - b) * (p - c));
return (s);
}

img

#include <iostream>
#include <cmath>

class Point
{
public:
    Point() = default;
    Point(double x, double y) : _x(x), _y(y) {}

    double x() const { return _x; }
    double y() const { return _y; }
    void setX(double x) { _x = x; };
    void setY(double y) { _y = y; }

private:
    double _x = 0.0;
    double _y = 0.0;
};

std::istream &operator>>(std::istream &is, Point &p)
{
    double x = 0.0;
    double y = 0.0;
    is >> x >> y;
    p.setX(x);
    p.setY(y);
    return is;
}

std::ostream &operator<<(std::ostream &os, const Point &p)
{
    os << '(' << p.x() << ',' << p.y() << ')';
    return os;
}

double distance(const Point &p1, const Point &p2)
{
    double dx = p2.x() - p1.x();
    double dy = p2.y() - p1.y();
    return std::sqrt(dx * dx + dy * dy);
}

class Triangle
{
public:
    Triangle() = default;
    Triangle(const Point &pt1, const Point &pt2, const Point &pt3) : _pt1(pt1), _pt2(pt2), _pt3(pt3) {}

    const Point &pt1() const { return _pt1; }
    const Point &pt2() const { return _pt2; }
    const Point &pt3() const { return _pt3; }

    bool isValid() const
    {
        double a = distance(_pt1, _pt2);
        double b = distance(_pt2, _pt3);
        double c = distance(_pt3, _pt1);
        return (a + b) > c && (b + c) > a && (c + a) > b;
    }

    double area() const
    {
        double a = distance(_pt1, _pt2);
        double b = distance(_pt2, _pt3);
        double c = distance(_pt3, _pt1);
        double s = (a + b + c) / 2.0;
        return std::sqrt(s * (s - a) * (s - b) * (s - c));
    }

private:
    Point _pt1;
    Point _pt2;
    Point _pt3;
};

std::ostream &operator<<(std::ostream &os, const Triangle &triangle)
{
    os << '{' << triangle.pt1() << ',' << triangle.pt2() << ',' << triangle.pt3() << '}';
    return os;
}

int main()
{
    Point pt1, pt2, pt3;
    std::cout << "Input Point 1: ";
    std::cin >> pt1;
    std::cout << "Input Point 2: ";
    std::cin >> pt2;
    std::cout << "Input Point 3: ";
    std::cin >> pt3;
    Triangle triangle(pt1, pt2, pt3);
    if (!triangle.isValid())
        std::cout << "The triangle " << triangle << " is not valid.\n";
    else
        std::cout << "The area of the triangle " << triangle << " is " << triangle.area() << '\n';
    return 0;
}