30/09/2018, 16:05

Giúp mình sửa lỗi bài tính diện tích tam giác với

#include <iostream>
#include <conio.h>
#include <math.h>

using namespace std;

class Point
{
private:
    float x;
    float y;
public:
    Point();
    Point(float, float);
    void Nhap ();
    float DoDai (Point);
};

class Triangle
{
private:
    Point p1, p2, p3;
public:
    void Nhap();
    void Xuat();
    float DienTich ();
};

Point::Point()
{
    x=0;
    y=0; 
}

Point::Point (float a, float b)
{
    x = a;
    y = b;
}

void Point::Nhap()
{
        cout << "x: ";
        cin >> x;
        cout << "y: ";
        cin >> y;
}

float Point::DoDai (Point p)
{
    return sqrt(pow(x-p.x,2)+pow(y-p.y,2));
}

void Triangle::Nhap()
{
    cout <<"Nhap toa do dinh 1: "<< endl;
    p1.Nhap();
    cout <<"Nhap toa do dinh 2: " << endl;
    p2.Nhap();
    cout <<"Nhap toa do dinh 3: " << endl;
    p3.Nhap();
}

float Triangle::DienTich ()
{
    float a, b, c, p, s;
    a = p1.DoDai(p2);
    b = p2.DoDai(p3);
    c = p3.DoDai(p1);
    p = (a+b+c)/2;
    s = sqrt(p*(p-a)*(p-b)*(p-c));
    return s;
}

void main()
{
    Triangle n,s;
    n.Nhap();
    cout << s.DienTich();
    getch();
}

Tại sao mình in ra DT bằng 0 không ạ?
E muốn tạo hàm tạo cho cho class Triangle thì phải làm sao?

Nguyễn Minh Dũng viết 18:17 ngày 30/09/2018

Đã cấp cứu lên FB, không biết có cao nhân nào vào giúp không

Hoài Nam viết 18:17 ngày 30/09/2018

Bài này mình cũng từng làm qua.

Theo mình là kiểu trả về là Double phần hàm Float dientich bạn sửa lại là Double dientich nhé

Phạm Hoàng Tuấn viết 18:08 ngày 30/09/2018

, Nhập n, mà tính diện tích s.

Ngo Duc Huy viết 18:09 ngày 30/09/2018

Anh @ltd trông hiền lành thế mà cũng troll thành viên. Thật thất vọng :’(

Ngo Duc Huy viết 18:18 ngày 30/09/2018

@ndth: triangle n có DienTich là một phương thức của nó (đúng ra có thể gọi là một thuộc tính). Tức là triangle n đã bao gồm diện tích, chu vi, các cạnh, các tính chất định lí,… Vấn đề của bạn là chưa hiểu bản chất của hướng đối tượng.

AnNdth viết 18:10 ngày 30/09/2018

Mình đúng là vẫn chưa hiểu rõ phần này lắm. Bạn có thể giải thích kĩ cho mình hơn chút đc k? Vì thật chất bài này là tìm diện tích lớn nhất. Nhưng cái này là mình tự code lại thành bài dễ hơn mà ai dè…

AnNdth viết 18:07 ngày 30/09/2018

Hịc. S a k ra tay giải thích e hiểu với.

AnNdth viết 18:10 ngày 30/09/2018

Tại e chưa hiểu rõ bản chất của hướng đối tượng là ntn e đã sửa lại và nó ra r số không phải là 0 r . Mà e muốn tạo hàm tạo cho cho class Triangle thì phải làm sao?

AnNdth viết 18:15 ngày 30/09/2018
#include <iostream>
#include <conio.h>
#include <math.h>

using namespace std;

class Point
{
private:
    double x;
    double y;
public:
    Point();
    Point(double, double);
    void Nhap ();
    double DoDai (Point);
};

class Triangle
{
private:
    Point p1, p2, p3;
public:
    void Nhap();
    void Xuat();
    double DienTich ();
};

Point::Point()
{
    x=0;
    y=0; 
}

Point::Point (double a, double b)
{
    x = a;
    y = b;
}

void Point::Nhap()
{
        cout << "x: ";
        cin >> x;
        cout << "y: ";
        cin >> y;
}

double Point::DoDai (Point p)
{
    return sqrt(pow(x-p.x,2)+pow(y-p.y,2));
}

void Triangle::Nhap()
{
    cout <<"Nhap toa do dinh 1: "<< endl;
    p1.Nhap();
    cout <<"Nhap toa do dinh 2: " << endl;
    p2.Nhap();
    cout <<"Nhap toa do dinh 3: " << endl;
    p3.Nhap();
}

double Triangle::DienTich ()
{
    double a, b, c, p, s;
    a = p1.DoDai(p2);
    b = p2.DoDai(p3);
    c = p3.DoDai(p1);
    p = (a+b+c)/2;
    s = sqrt(p*(p-a)*(p-b)*(p-c));
    return s;
}

void main()
{
    Triangle s;
    s.Nhap();
    cout << s.DienTich();
    getch();
}

Phạm Hoàng Tuấn viết 18:22 ngày 30/09/2018

Em cứ nhớ hàm khởi tạo có tên trùng với tên claas, không có giá trị trả về, có thể có tham số hoặc k có.

``C++
class Triangle
{
private:
Point p1, p2, p3;
public:
Triangle();
void Nhap();
void Xuat();
float DienTich();
};

 Triangle:: Triangle()
{
	 p1 = Point(0, 0);
	 p2 = Point(0, 0);
	 p3 = Point(0, 0);
}

``

AnNdth viết 18:18 ngày 30/09/2018

<img src="https://daynhauhoc.com//daynhauhoc.s3-ap-southeast-1.amazonaws.com/original/1X/2a858a2489189621c2427745104330798756b741.PNG" width=“666” height=“500”
A có thể ví dụ cho e bài này k? Phần nhóm tạo hủy đó. E chỉ biết Khởi tạo mặc định bằng 0 thôi. Còn phần sau e không hiểu phải làm sao nữa.

Phạm Hoàng Tuấn viết 18:12 ngày 30/09/2018

E thử dùng xem, có j bất ổn khôg

class PhanSo
{
private:
    int _tu, _mau;
public:

    PhanSo(int tu, int mau);
    PhanSo(int n);
    PhanSo(const PhanSo &x);
};

PhanSo::PhanSo(int tu, int mau)
{
    _tu = tu;
    _mau = mau;
}

PhanSo::PhanSo(int n)
{
    _tu = n;
    _mau = 1;
}

PhanSo::PhanSo(const PhanSo &a)
{
    _tu = a._tu;
    _mau = a._mau;
}
AnNdth viết 18:06 ngày 30/09/2018

Dạ. Cám ơn a nha

Bài liên quan
0