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?
Bài liên quan
Đã cấp cứu lên FB, không biết có cao nhân nào vào giúp không
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é
, Nhập
n
, mà tính diện tíchs
.Anh @ltd trông hiền lành thế mà cũng troll thành viên. Thật thất vọng :’(
@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.
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è…
Hịc. S a k ra tay giải thích e hiểu với.
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?
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();
};
``
<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.
E thử dùng xem, có j bất ổn khôg
Dạ. Cám ơn a nha