ok. Mình biết rồi. Tại mới tham gia lần đầu chưa có kinh nghiệm lắm. Các bạn thông cảm !!
Cách sử dụng kế thừa để xây dựng nên các lớp trong C++?
bạn đọc meta đi. đọc xong đảm bảo ok
Vừa nhìn lướt qua 1 lượt. Nhìn xong rồi, cho phép em … :running: :running: :running:
:running: :running: :running: :running: bài này mình chỉ làm đc 60%
Bạn có thể post lên cho mình xem được không…?? Mình chỉ làm được 2 phương thức cuối trong class HoaDon thôi. Mong bạn giúp !.
#include<iostream>
using namespace std;
class HoaDon
{
private:
int soLuong;
double giaCa;
public:
void setGiaca();
void inHoadon();
};
/*<Kiểu dữ liệu> <Tên Class> :: <Tên phương thức(Danh sách tham số nếu có)>*/
void HoaDon::setGiaca()
{
do{
cout << "Nhap vao so luong: ";
cin >> soLuong;
if(soLuong < 0)
{
cout << "So luong khong hop le. Xin kiem tra lai !"<<endl;
}
}while(soLuong < 0);
do{
cout << "Nhap vao gia tien: ";
cin >> giaCa;
if(giaCa < 0)
{
cout << "Gia tien khong hop le. Xin kiem tra lai !"<<endl;
}
}while(giaCa <0);
}
void HoaDon::inHoadon()
{
double giaMoi = soLuong * giaCa;
cout << "\n\n\t\t*Thong Tin Hoa Don Cua Ban"<<endl<<endl;
cout << "So luong: " << soLuong<<endl;
cout << "Don gia: " << giaCa<<endl;
cout << "So tien can thanh toan: " <<giaMoi<<endl;
}
int main()
{
HoaDon x;
x.setGiaca();
x.inHoadon();
system("PAUSE");
return 0;
}
Lần đầu bạn tham gia mình sẽ sửa lại cách up code giúp bạn nhé. Xem hướng dẫn up code lên diễn đàn tại đây How to post your code on DNH
Cảm ơn bạn đã giúp mình !!!
Bạn thiếu constructor hay hàm tạo nhé. làm từ từ mình chỉ tiếp.
Sau một hồi mày mò mấy bài của topic cũ thì minh chỉnh sửa lại được như thế này… Nhưng không thể chạy được… Vì mình không biết định nghĩa cái void setGiaCa(double giaMoi). Mong bạn chỉ giúp mình
#include<iostream>
using namespace std;
class HoaDon
{
private:
int soLuong;
double giaCa;
public:
HoaDon();
HoaDon(int sl, double gc);
double tongTien();
void setGiaCa(double giaMoi);
void inHoadon();
};
int main()
{
HoaDon hoaDon(3, 1000);
cout << "\nThong tin hoa don: ";
hoaDon.inHoadon();
cout <<endl;
cout << "Moi nhap thong tin hoa don cua ban: ";
HoaDon hoaDon2;
hoaDon2.setGiaCa();
cout << "\n\n\t\t* Thong tin hoa don cua ban: ";
hoaDon2.inHoadon();
cout <<endl;
system("PAUSE");
return 0;
}
HoaDon::HoaDon() : soLuong(1), giaCa(10){
}
HoaDon::HoaDon(int sl, double gc) : soLuong(sl), giaCa(gc){
}
double HoaDon::tongTien(){
int sl;
double gc;
double tongTien = sl * gc;
return sl * gc;
}
void HoaDon::setGiaCa(double giaMoi)
{
giaCa = giaMoi;
cin >> giaCa;
}
void HoaDon::inHoadon(){
cout << "\nSo luong: "<<soLuong;
cout << "\nGia cua 1 san pham: "<<giaCa;
cout << "\nTong tien can thanh toan: "<<tongTien();
}
Thứ nhất là hàm setGiaCa(double) của bạn có 1 tham số, nhưng trong hàm main bạn gọi hàm với không đối số truyền vào?
void HoaDon::setGiaCa(double giaMoi) // có 1 tham số
hoaDon2.setGiaCa(); // không đối số.???
Mình đã sửa lại giống bạn nhưng vẫn không được. Nó bão lỗi thế này :
e:\c++\emty project\emty project\bai2.cpp(23): error C2144: syntax error : ‘double’ should be preceded by ‘)’
1>e:\c++\emty project\emty project\bai2.cpp(23): error C2660: ‘HoaDon::setGiaCa’ : function does not take 0 arguments
1>e:\c++\emty project\emty project\bai2.cpp(23): error C2059: syntax error : ‘)’
Lỗi dòng 23. Bạn thừa hoặc thiếu 1 dấu ). và bạn chưa truyền đối số
Mình đã dùng thử mọi cách nhưng vẫn không được bạn ạ…Chắc phải nghiên cứu thêm đã. Cảm ơn bạn đã giúp mình !
Nhìn qua thì còn 3 chỗ phải sửa. Bạn có chắc sửa lỗi đầu tiên dạng như thế này?
hoaDon2.setGiaCa(2000);
Nghĩa là mình truyền vào cho nó 1 tham số bất kì nào cũng được à. Nhưng mình nghĩ cái giaMoi là nhập từ bàn phím chứ. Thật ra phần class HoaDon mình cũng chưa hieur nó yêu cầu cái gì lắm. Nhất là cái double tongTien() vs cái void setGiaCa
Mình để code như thế này:
#include<iostream>
using namespace std;
class HoaDon
{
private:
int soLuong;
double giaCa;
public:
HoaDon();
HoaDon(int sl, double gc);
double tongTien();
void setGiaCa(double giaMoi);
void inHoadon();
};
int main()
{
HoaDon hoaDon(3, 1000);
cout << "Thong tin hoa don: ";
hoaDon.inHoadon();
cout <<endl;
cout << "Moi nhap thong tin hoa don cua ban: ";
HoaDon hoaDon2;
hoaDon2.setGiaCa(2000);
cout << "\n\n\t\t* Thong tin hoa don cua ban: ";
hoaDon2.inHoadon();
cout <<endl;
system("PAUSE");
return 0;
}
HoaDon::HoaDon() : soLuong(1), giaCa(10){
}
HoaDon::HoaDon(int sl, double gc) : soLuong(sl), giaCa(gc){
}
double HoaDon::tongTien(){
double tongTien = soLuong * giaCa;
return soLuong * giaCa;
}
void HoaDon::setGiaCa(double giaMoi)
{
giaCa = giaMoi;
}
void HoaDon::inHoadon(){
cout << "\nSo luong: "<<soLuong;
cout << "\nGia cua 1 san pham: "<<giaCa;
cout << "\nTong tien can thanh toan: "<<tongTien();
}
Nó chạy được và ra là:
Thông tin hóa đơn:
Số lượng: 3
Giá của 1 sản phẩm: 1000
Tổng tiền cần thanh toán: 3000
Mời bạn nhập thông tin hóa đơn của bạn
Thông tin hóa đơn của bạn
Số lượng: 1
Giá của 1 sản phẩm: 2000
Tổng tiền cầ thanh toán: 2000.
Hết______________________________________
Vậy làm sao để nhập giá cả từ bàn phím được hả bạn??
Tham số khác đối số nhé bạn
hàm setGiaCa(double x) // x o day la tham so
nhung khi ban goi hàm tu nơi khac hoadon.setGiaCa(double y) // y = 2000 la doi so dc truyen vao
Bạn nên suy nghĩ hiểu đề trước đã.
Class HoaDon để thể hiện các instance hóa đơn mà ở đây có giá và số lượng
Nếu bạn muốn nhập giá cả từ bàn phím thì trong hàm setGiaca(double giaca) bạn phải cho người dùng nhập vào chứ không phải là gán luôn giá trị.
Vậy bài này không cần nhập giá cả từ bàn phím đúng không. Chỉ cần in ra màn hình đúng không bạn?
Nhưng mình không biết cái hàm setGiâC(double giaMoi) phải viết thế nào… Bạn giúp mình với.