Nhờ mọi người xem giúp lỗi sai bài CTDL

Em đang học về kiểu dữ liệu cấu trúc, code này dùng để cài đặt và hiển thị nội dung con trỏ, anh chị giúp em xem sai ở đâu với ạ!

# include <iostream>
# include <cstring>
using namespace std;

typedef struct{
	int day;
	int month;
	int year;
} Date;

typedef struct {
	char name [20]; // ten nhan vien
	Date birthDay; // ngay sinh nhan vien
	char role [20]; // chuc vu nhan vien
	float salary; // luong nhan vien
} Employee;

void Initstruct (Employee *myEmployee);
void Display (Employee *myEmployee);

void Initstruct (Employee *myEmployee)
{
	myEmployee = new Employee;
	cout << "name :";
	cin.getline  (myEmployee -> name, 20);
	cout << " day of birthday :";
	cin >> myEmployee -> birthDay.day;
	cout << "month of birth: ";
	cin >> myEmployee -> birthDay.month;
	cout << "year of birth: ";
	cin >> myEmployee -> birthDay.year;
	cout << "role: ";
	cin.getline (myEmployee -> role, 20);
	cout << "Salary : ";
	cin >> myEmployee -> salary;
}
void Display(Employee *myEmployee)
{
	cout << "name: " << myEmployee -> name << endl;
	cout << "birthday: " << myEmployee -> birthDay.day << "/"
		 << myEmployee -> birthDay. month << "/"
		 << myEmployee -> birthDay. year << endl;
	cout << "role: " << myEmployee -> role << endl;
	cout << "salary: " << myEmployee -> salary << endl;
	
}
int main()
{
	Employee *myEmployee;
	Initstruct(myEmployee);
	Display(myEmployee);
	
	system("pause");
	return 0;
	
}

Không biết cái chỗ dùng new cho khởi tạo có đúng không nhỉ?

đấy là khởi tao bộ nhớ động cho con trỏ mà. k hiểu tại sao code của em chạy đến chỗ nhập role lại không chạy được nữa @@

1 Like

bạn thử xóa bộ nhớ đệm fflush(stdin) chưa?

void Initstruct (Employee *&myEmployee)

cảm ơn anh. nhập được hết rồi nhưng không hiển thị được.

1 Like

thêm & vào vẫn sai anh ạ

1 Like

Sửa lại cái khai báo Initstruct nữa

1 Like

sửa như thế nào anh ??

void Initstruct (Employee *&myEmployee); //<- Mình nghĩ bạn quên thêm ở đây
void Display (Employee *myEmployee);

void Initstruct (Employee *&myEmployee)
{
	myEmployee = new Employee;
	cout << "name :";
	cin.getline  (myEmployee -> name, 20);
	cout << " day of birthday :";
	cin >> myEmployee -> birthDay.day;
	cout << "month of birth: ";
	cin >> myEmployee -> birthDay.month;
	cout << "year of birth: ";
	cin >> myEmployee -> birthDay.year;
	cout << "role: ";
	cin.getline (myEmployee -> role, 20);
	cout << "Salary : ";
	cin >> myEmployee -> salary;
}

Sửa v thôi là chạy được r. Đã test.

2 Likes

được rồi ạ. cảm ơn anh

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?