Функция, использующая класс в качестве параметра [closed]

0

У меня возникают проблемы с функцией:

double area( const Point & a, const Point & b, const Point & c ); 

Инструкции для этой функции:

Область - это функция, не являющаяся членом, которая выполняет вычисления с помощью трехточечных аргументов. В частности, он вычисляет и возвращает область треугольника с вершинами, представленными тремя точками.

Любая помощь будет принята с благодарностью. Спасибо!

# include <string>
# include <iostream>
# include <cmath>
using namespace std;

class Point{
    public:
        Point( double x = 0, double y = 0 );
        double getX() const;
        double getY() const;
        Point & setX( double x );    //  mutator, returning reference to self
        Point & setY( double y );
        const Point & output() const;
        double distance( const Point & other ) const;
    private:
        double myX;
        double myY;
    };
double area( const Point & a, const Point & b, const Point & c );

int main (){


    Point a;
    Point b;
    Point c;

    a.setX (2);
    a.setY (0);
    b.setX (0);     
    b.setY (1);
    c.setX (0);
    c.setY (0);


    system ("pause");

}//main

Point :: Point( double x, double y){
    setX (x);
    setY (y);
}// ctr
 double Point :: getX() const{
    return myX;
}//getX
double Point :: getY() const{
    return myY;
}//getY
Point & Point :: setX( double x ){
    myX = x;
    return *this;
}//setX
Point & Point :: setY( double y ){
    myY = y;
    return *this;
}//setY
const Point & Point :: output() const{
    cout << "(" << myX << "," << myY << ")" << endl;
    return *this;
}//output
double Point :: distance( const Point & other ) const{
    double d;
    d = sqrt(pow(other.myX-myX,2)+pow(other.myY-myY,2));
    return d;
}//distance

double area( const Point & a, const Point & b, const Point & c ){

    Point area;

    double length1, length2, length3;
    double s, area1;
    length1 = sqrt(pow(a.getX-b.getX,2)+pow(a.getY-b.getY,2));
    length2 = sqrt(pow(b.getX-c.getX,2)+pow(b.getY-c.getY,2));
    length3 = sqrt(pow(a.getX-c.getX,2)+pow(a.getY-c.getY,2));

    s = (length1+length2+length3)/2;


    area1 = sqrt(s*(s-length1)(s-length2)(s-length3));

return area1;

}//area
Теги:

1 ответ

0
Лучший ответ

Я думаю, что у вас проблемы с кодом, поскольку вы опускаете () при вызове методов Point в функции area, например

length1 = sqrt(pow(a.getX-b.getX,2)+pow(a.getY-b.getY,2));
length2 = sqrt(pow(b.getX-c.getX,2)+pow(b.getY-c.getY,2));
length3 = sqrt(pow(a.getX-c.getX,2)+pow(a.getY-c.getY,2));

Вы должны использовать a.getX(), b.getX() и т.д.

  • 0
    У меня также есть проблема с area1 = sqrt (s * ((s-length1) (s-length2) (s-length3))); Я получаю ошибку: ошибка C2064: термин не оценивает функцию, принимающую 1 аргумент
  • 0
    В C ++ сопоставление не подразумевает умножение - вам нужны явные * s везде, где вы умножаете
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню