Đọc file gồm chuỗi có chứa dấu phẩy ngăn cách một lần

MÌnh có 1 file như thế này


và 1 struct như sau:

struct Flight
{
	City src; //Điểm đầu
	City dst; //Điểm đến
    int id; //Số hiệu chuyến bay
	float cost; //Giá tiền
	int duration; //Thời gian bay
};

Nhờ mọi người chỉ giúp mình cách đọc và tách từng thành phần trong file để lưu thông tin vào từng thành phần tương ứng trong struct. Mình cũng đã đọc khá nhiều hướng dẫn trên các diễn đàn nhưng ở đó họ chỉ làm với cùng kiểu dữ liệu hoặc mỗi thành phần trong file đều ngăn cách nhau bởi dấu phẩy. Trường hợp của mình là chỉ có 1 dấu phẩy để ngăn cách tên 2 thành phố, những thông tin còn lại chỉ cách nhau bằng khoảng trắng. Cảm ơn mọi người rất nhiều.

1 Like

Bạn phải đọc ngược từ cuối dòng lên đầu dòng để tìm chữ cái cuối cùng, đánh dấu vị trí đó lại. Từ đó sang trái thì dùng dấu phẩy, từ đó sang phải thì dùng dấu cách.

Bạn diễn giải rõ hơn được không? mình vẫn thấy hơi mơ hồ

Tên thành phố bạn thử format kiểu Buon_Ma_Thuoc, Cam_Ranh. Không để space.
Sau đó cắt chuỗi dựa vào space(khoảng trắng).
Trường hợp type City thì bạn check xem có tồn tại dấu phẩy ko “,”. Nếu có thì replace đi.

đề bài lưu ý là tên thành phố có thể có khoảng trắng bạn ơi, không được đổi như thế =((

Sr, đọc ko kỹ. Mình đang bận nên ko confirm kỹ được
Thế thì vẫn cắt chuỗi dựa vào space.
Check type string thì gán vào “city đầu” đến khi nào gặp phần tử có chứa dấy phẩy “,” thì kết thúc input cho “city đầu”.
Check nếu type của các phần tử tiếp theo. Nếu là type string thì lại gán vào city đến.
Còn type int thì gán tuần tự. (Có thể dùng Regular expression để check)
Trước khi gán city đến có thể check null để khỏi gán đè. Nếu tồn tại chuỗi thì ta cộng chuỗi vào là được.
Tổng quan thế này:
Đọc file line by line. Cắt chuỗi theo từng line. Check data mảng vừa được cắt và gán vào struct.
Chia nhỏ bài toán ra sẽ dễ làm hơn :smiley:

1 Like

Cảm ơn bạn Hung nhé

Thuật toán mình mới update có vẻ hơi dài dòng. Có sai gì hay có cách nào hay thì post lên mọi người tham khảo nhé.

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