Cách tách các số từ các dữ liệu vào
Mọi người giúp mình cách tách các số từ các dữ liệu vào ?
Ví dụ: dữ liệu vào là một dòng gồm các: họ tên, ngày, tháng, năm sinh.
Nhiệm vụ tách ra: số ngày , tháng, năm.
Egs:
Tran Van A 12 12 1212
=> ngày là dd=12, tháng mm=12, năm yy=1212
Tran Van A 12/12/1212
=> ngày là dd=12, tháng mm=12, năm yy=1212
Tran Van A 12-12-1212
=> ngày là dd=12, tháng mm=12, năm yy=1212
Lưu ý: không phải chuyển ngày tháng năm từ chuỗi ký từ thánh số đâu :3 mà ngày, tháng năm vào bằng kiểu int :3
Helppppp !
Ví dụ một chuỗi như thế nào?
Chuỗi có ngày tháng năm bị lộn xộn hay theo trật tự nhất định?
Nếu nó là chuỗi được tách ra với họ tên và có dạng YYYYMMDD thì dùng toán tử chia lấy dư là ra
đây bạn Egs:
Tran Van A 12 12 1212
=> ngày là dd=12, tháng mm=12, năm yy=1212
Tran Van A 12/12/1212
=> ngày là dd=12, tháng mm=12, năm yy=1212
Tran Van A 12-12-1212
=> ngày là dd=12, tháng mm=12, năm yy=1212
Hướng giải của mình:
tks b,nhưng nếu như vậy thì ngày tháng năm nhập vào thuộc kiểu kí tự mất rồi, ở đây là ngày tháng năm là số thuộc kiểu int :3 vì nộp cho máy tự chấm nên sợ nó phân biệt kiểu dữ liệu vào là int và char :3
Thực ra bạn đọc vào kiểu gì chẳng được, miễn là ra đáp số.
Làm như cách của @Dark.Hades là ổn đấy.
Không hiểu chủ topic muốn nói gì luôn. Chủ topic không cho mọi người ở đây biết là đã học được bao lâu, người ta đâu có hình dung được mà trả lời cho đúng.
Nếu mới học, đang còn lấn cấn về kiểu dữ liệu (cụ thể là kiểu của biến / data types/ Basic types) thì đừng có tranh luận lôi thôi, mà phải làm rõ đề bài: nếu người dùng nhập vào không phải số thì có bắt lỗi, hiển thị ra và yêu cầu nhập lại không hay là chương trình die luôn vì không đúng kiểu. Cách khôn ngoan ở đây là mô tả lại đang học C như thế nào? chương mấy sách nào hoặc khóa học nào, ở đâu, và đưa hẳn đề bài lên đây để các bạn ở đây hình dung rõ nên “tư vấn” thế nào cho phù hợp.
Tất nhiên, theo mọi người nhìn thấy ở đây: Tran Van A 12/12/1212 <= rõ ràng dữ liệu đầu vào là kiểu char (thực chất là một mảng char vì C không có kiểu string) không thể chối cãi. Vậy mà chủ topic cứ khăng khăng int thì bó tay ngay từ đầu, mấy thánh ở đây sẽ lạy chủ topic nhiều lạy luôn.
Cuối cùng, bài toán trên thực chất là đọc một chuỗi, từ đó nhận dạng xem chỗ nào là số thì đọc nó cho đến khi gặp ký tự ngăn cách (khoảng trắng, dấu chém, dấu trừ…) thì xem như "hoàn tất một số (cũng kiểm tra độ dài/ giới hạn số đó xem có phù hợp với ngày/ tháng/ năm theo định nghĩa về ngày tháng năm trong thực tế? Khi OK rồi thì ÉP KIỂU hoặc gọi hàm atoi() để chuyển chuỗi biểu diễn số đó về kiểu int . Nếu đề toán phức tạp thì phải kiểm tra thêm để xem nếu ngày là 31 thì tháng đó là tháng nào, có hợp lý không, năm nhuận hay không để xử lý tháng Hai…
Vì không ai ở đây biết chủ topic đã học đến đâu về C/C++, có biết/ được phép viết function để xử lý cái chuỗi nhập vào hay không nên người vào đọc không minh họa một hàm dạng explode trong PHP mà được viết dưới C.
Gợi ý: chủ topic nên tìm kiếm với cụm từ split string in C/C++ using delimiter sẽ ra vô số bài giải, chưa biết chuyển chuỗi thành int thì lại gõ tiếp convert string to number C/C++ là ra cho hàm để làm, thích chơi ngông, không dùng hàm mà viết ở cấp thấp như mấy tay viết thư viện chuẩn thì convert string to number C/C++ without funcion