Vì vậy, để đỡ đau đầu (và thay vào đó hãy tạo một cái), tôi đã cố gắng đặt một thành viên mảng chuỗi trước một biến cấu trúc có cùng tên, nhưng nó không hoạt động và báo lỗi: std::string { hay còn gọi là lớp std:: basic_string}' không có thành viên nào có tên 'maxPerDay'"
Tôi đang cố gắng làm cho nó đọc một giá trị mảng chuỗi và biến nó thành giá trị của giá trị cấu trúc đó, nếu điều đó hợp lý.
cấu trúc dữ liệu hàng tháng{
int máy bayHạ cánh;
int máy bayDeparted;
int maxPerDay;
ít nhất mỗi ngày;
};
Đây là cấu trúc của tôi.
Mình đã khai báo biến MonthlyData bên dưới:
dữ liệu hàng tháng Tháng 1, Tháng 2, Tháng 3, Tháng 4, Tháng 5, Tháng 6, Tháng 7, Tháng 8, Tháng 9, Tháng 10, Tháng 11, Tháng 12;
Ngoài ra, mảng chuỗi của tôi trông như thế này:
chuỗi thángNames[12] = { "Tháng 1", "Tháng 2", "Tháng 3", "Tháng 4", "Tháng 5", "Tháng 6", "Tháng 7", "Tháng 8", "Tháng 9", "Tháng 10", "Tháng 11" , "Tháng mười hai"};
Đây là vòng lặp tôi đang cố gắng triển khai, tôi hy vọng nó giúp tôi tiết kiệm thời gian khỏi phải viết mã thủ công:
vì (int i = 0; i < 12; i++)
{
cout << "Nhập máy bay hạ cánh vào " << thángNames[i] << endl;
cin >> thángNames[i].planesHạ cánh;
cout << "Nhập máy bay khởi hành đi " << thángNames[i] << endl;
cin >> thángNames[i].planesDeparted;
cout << "Nhập số chuyến khởi hành tối đa mỗi ngày trong " << thángNames[i] << endl;
cin >> thángNames[i].maxPerDay;
cout << "Nhập ít nhất mỗi ngày vào " << thángNames[i] << endl;
cin >> thángNames[i].leastPerDay;
}
Tôi chỉ muốn chương trình cho phép người dùng nhập số vào cấu trúc tháng tương ứng. Tôi chỉ không muốn mã của mình trở nên dư thừa.
Bạn có thể sử dụng địa chỉ của các cấu trúc này để xây dựng một mảng "song song" với tên tháng:
Dữ liệu hàng tháng *thángAddr[] = { &Jan, &Feb, &Mar, &Apr, &May, &Jun,
&Tháng 7, &Tháng 8, &Tháng 9, &Tháng 10, &Tháng 11, &Tháng 12 };
Sau đó bạn có thể nhập nó
cout << "Nhập máy bay hạ cánh vào " << thángNames[i] << endl;
cin >> thángAddr[i]->planesHạ cánh;
Tuy nhiên, một lựa chọn tốt hơn là tránh lặp lại chính mình, ví dụ: chỉ sử dụng. std::bản đồ
Từ tên tháng đến cấu trúc tháng thay vì sử dụng các biến rõ ràng
dữ liệu std::map;
sau đó bạn có thể sử dụng dữ liệu["Tháng 1"]
thay vì Tháng một
. Sử dụng bản đồ, bạn cũng có thể sử dụng dữ liệu[thángNames[i]]
Lập chỉ mục nó.
Thứ gì đó đơn giản hơn bản đồ sẽ là một mảng gồm 12 cấu trúc, nhưng mã của bạn sẽ cần sử dụng chỉ mục số (ví dụ: dữ liệu[0]
thay vì Tháng một
):
Dữ liệu dữ liệu hàng tháng[12];
Nhưng nếu bạn cần tham chiếu đến tên của một cá nhân, bạn có thể tạo một tham chiếu để mã dễ đọc hơn
tự động& tháng 1 = dữ liệu[0];
tự động& Tháng 2 = dữ liệu[1];
auto& Mar = dữ liệu[2];
auto& tháng 4 = dữ liệu[3];
vân vân……
Tôi là một lập trình viên xuất sắc, rất giỏi!