Mong mọi người giúp em bài C++ về class này với ạ
Đề bài:
Xây dựng lớp CPU là lớp biểu diễn con chip của máy vi tính. Lớp CPU có các thuộc tính và phương thức sau:
Thuộc tính:
double tocDo: Xung nhịp tính theo GHz của con chip
Phương thức
Hàm tạo một đối CPU(double s): Khởi tạo cho tốc độ của chip là s
Hàm sucManh(): Trả lại giá trị của biến tocDo
Hàm xepHang(): xét xem giá trị do hàm sucManh() trả lại có lớn hơn 3 hay không. Nếu lớn hơn 3 thì in ra thông điệp “Chip này rất mạnh”;
Xây dựng lớp Core2Dual thừa kết từ lớp CPU. Lớp này không có thêm thuộc tính gì cả.
Phương thức:
Hàm tạo có một đối số Core2DualT(double s): Khởi tạo cho tốc độ chip là s
Định nghĩa lại phương thức sucManh sao cho phương thức này trả lại giá trị bằng 2 * tocDo.
a. Viết hàm main sử dụng các lớp này như sau:
Khai báo một biến thuộc lớp Core2Dual như sau:
Core2Dual aChip(2);
Gọi phương thức xepHang trên đối tượng aChip này.
b. Thay đổi chương trình như sau:
Khai báo phương thức sucManh ở lớp CPU là phương thức ảo
Biên dịch và chạy chương trình => Kết luận
Biên dịch và chạy chương trình.
Code của em đây.
#include<iostream>
using namespace std;
class CPU{
protected:
double tocDo;
public:
CPU(double s);
double sucManh();
void xepHang();
};
class Core2Dual: public CPU{
public:
Core2Dual(double s);
double sucManh();
};
int main()
{
Core2Dual aChip(2);
aChip.xepHang();
cout<<endl;
system("pause");
return 0;
}
CPU::CPU(double s):tocDo(s){
}
double CPU::sucManh(){
return tocDo;
}
void CPU::xepHang(){
if(tocDo >3)
{
cout <<"Chip nay rat manh. ";
}
else
{
cout <<"Chip nay yeu. ";
}
}
Core2Dual::Core2Dual(double s):CPU(s){
}
double Core2Dual::sucManh(){
return 2*tocDo;
}
Nếu em viết trương trình này thì nó phải ra: “Chip nay rat manh” đúng không ạ… Nhưng em chạy thì nó ra chip này yếu… Vậy không biết em sai chỗ nào, mong mọi người giúp đỡ.
Bạn truyền giá trị cho constructor là 2 ( < 3 ) thì nó in ra chip yếu là đúng rồi chứ sao nữa. Khởi tạo giá trị 4 5 6 … xem nó in ra gì.
cho tham số là 2 trong khi dk mạnh là phải lớn hơn 3. =)))
Mình đang gọi hàm Core2Dual trả về giá trị là: tocDo*2 mà bạn.
À đây rồi, bạn code không có cách nhau giữa các hàm với lớp nên mình khó nhìn quá (mắt mờ). Bạn xem lỗi mình đã sửa ở phần dưới và có giải thích.
Nếu muốn giữ nguyên constructor như trên, bạn phải dùng giá trị được trả lại trong hàm Core2Dual::sucManh() để so sánh (cần override hàm xepHang() như sau):
Nếu chưa gọi hàm thì nó k hoạt động. Mình nghĩ là thay (tocDo>3) bằng (sucManh()>3) là dc rồi. Có gì sai thì sửa giúp mình nha
@minh_vu_03 hoặc @Thanh_Nam có thể sửa lại cái tiêu đề cho nó cụ thể hơn được không?
Tiêu đề này không thể hiện được nội dung câu hỏi.