#include <iostream>
#include <fstream>
using namespace std;
class HH {
private:
float chieuDai;
float chieuRong;
float chieuCao;
public:
// Phương thức khởi tạo mặc định
HH() : chieuDai(0), chieuRong(0), chieuCao(0) {}
// Phương thức khởi tạo có tham số
HH(float dai, float rong, float cao) : chieuDai(dai), chieuRong(rong), chieuCao(cao) {}
// Phương thức tính thể tích
float tinhTheTich() const {
return chieuDai * chieuRong * chieuCao;
}
// Toán tử xuất <<
friend ostream& operator<<(ostream& os, const HH& hinhHop) {
os << "Chieu dai: " << hinhHop.chieuDai << endl;
os << "Chieu rong: " << hinhHop.chieuRong << endl;
os << "Chieu cao: " << hinhHop.chieuCao << endl;
os << "The tich: " << hinhHop.tinhTheTich() << endl;
return os;
}
// Toán tử nhập >>
friend istream& operator>>(istream& is, HH& hinhHop) {
cout << "Nhap chieu dai: ";
is >> hinhHop.chieuDai;
cout << "Nhap chieu rong: ";
is >> hinhHop.chieuRong;
cout << "Nhap chieu cao: ";
is >> hinhHop.chieuCao;
return is;
}
// Toán tử cộng (+)
HH operator+(const HH& hinhHop) {
return HH(
this->chieuDai + hinhHop.chieuDai,
this->chieuRong + hinhHop.chieuRong,
this->chieuCao + hinhHop.chieuCao
);
}
};
int main() {
// Khai báo hai đối tượng P và Q thuộc lớp HH
HH P(3.5, 2.0, 1.5); // Khởi tạo với giá trị cụ thể
HH Q;
cout << "Nhap thong tin hinh hop Q:" << endl;
cin >> Q;
// Tính tổng hai hình hộp P và Q
HH Tong = P + Q;
// Xuất thông tin P, Q và tổng ra màn hình
cout << "Thong tin hinh hop P:" << endl;
cout << P << endl;
cout << "Thong tin hinh hop Q:" << endl;
cout << Q << endl;
cout << "Thong tin tong hai hinh hop P va Q:" << endl;
cout << Tong << endl;
// Ghi thông tin vào tệp "hinhhop.txt"
ofstream file("hinhhop.txt");
if (file.is_open()) {
file << "Thong tin hinh hop P:" << endl;
file << P << endl;
file << "Thong tin hinh hop Q:" << endl;
file << Q << endl;
file << "Thong tin tong hai hinh hop P va Q:" << endl;
file << Tong << endl;
file.close();
cout << "Thong tin da duoc luu vao tep hinhhop.txt." << endl;
} else {
cout << "Khong the mo tep hinhhop.txt de ghi du lieu!" << endl;
}
return 0;
}