Sắp xếp tiếng Việt Có một tập tiếng Việt chứa n từ (cụm từ) xếp lộn xộn
Trả lời Câu Fcs35 trang 59 SBT Tin học 11 sách Cánh diều hay nhất, chi tiết sẽ giúp học sinh dễ dàng làm bài tập Tin học 11.
Giải SBT Tin học 11 Bài 8: Lập trình một số thuật toán sắp xếp
Câu Fcs35 trang 59 SBT Tin học 11: Sắp xếp tiếng Việt
Có một tập tiếng Việt chứa n từ (cụm từ) xếp lộn xộn. Em hãy viết chương trình sắp xếp lại n từ (cụm từ) đó theo thứ tự từ điển tiếng Việt để dễ tra cứu.
Dữ liệu: Nhập từ tệp danhsach.txt:
• Dòng đầu tiên chứa số nguyên dương n.
• n dòng sau, mỗi dòng là một xâu biểu thị từ hoặc cụm từ tiếng Việt. Kết quả: Đưa ra tệp Tudien.out:
Gồm n dòng, dòng thứ i in ra từ hoặc cụm từ thứ i theo thứ tự từ điển.
Lời giải:
Để so sánh thứ tự từ điển của các xâu tiếng Việt, em không thể dùng các phép toán so sánh “<, >, ...” như bình thường, vì trên bảng mã Unicode, các kí tự có dấu sẽ đứng sau 26 kí tự Latinh không dấu trong bảng ASCII. Vì vậy, em sẽ sử dụng thư viện locale là một thư viện chuyên dùng để xử quy chuẩn của các ngôn ngữ.
Em khai báo thư viện locale, sau đó khai báo sử dụng ngôn ngữ tiếng Việt bằng câu lệnh: locale.setlocale(locale.LC_ALL, "vi_VN"). Thư viện này cho phép ta dùng hai hàm như sau:
• locale.strcoll(s1, s2) : so sánh hai xâu và trả về:
– Một số âm nếu s1 đứng trước s2.
- Số 0, nếu s1 giống hệt s2.
– Một số dương nếu s2 đứng trước s1.
locale.strxfrm(s): chuyển đổi một xâu s thành một con số để thuận tiện cho việc so sánh thứ tự.
Câu lệnh locale.strcoll(s1, s2)có thể được viết thành biểu thức locale.strxfrm (s1) < locale.strxfrm (s2).
Trong bài này, đầu tiên em khai báo nhập xuất tệp (phải để mã hoá bằng UTF-8) và sử dụng thư viện locale với ngôn ngữ là tiếng Việt (mã vi_VN hoặc vi). Sau đó, em tạo mảng các xâu s rồi nhập n, tiếp theo em lần lượt nhập n dòng rồi cho vào mảng s. Cuối cùng, em sắp xếp mảng s sau cho strxfrm ( ) của các xâu trong mảng s theo chiều hướng tăng dần (có thể dùng hàm sort với cú pháp như ở dưới) và in ra kết quả.
Chương trình mẫu:
import sys
sys.stdin = open("danhsach.txt", "r", encoding="utf8") sys.stdout open ("Tudien.txt", "w", encoding="utf8") import locale
locale.setlocale (locale. LC ALL, "vi_VN")
n=int (input())
s=[]for i in range (n):
s.append(input())
s.sort (key=locale.strxfrm) for x in s:
print (x)
Xem thêm các lời giải sách bài tập Tin học lớp 11 Cánh diều hay, chi tiết khác:
Câu Fcs32 trang 57 SBT Tin học 11: Phân loại hoá chất...
Câu Fcs33 trang 57 SBT Tin học 11: Số lần đổi chỗ....
Câu Fcs34 trang 58 SBT Tin học 11: Sắp xếp tên sách tiếng Anh...
Câu Fcs35 trang 59 SBT Tin học 11: Sắp xếp tiếng Việt...
Câu Fcs36 trang 59 SBT Tin học 11: Phân bố phòng thi...
Xem thêm các lời giải sách bài tập Tin học lớp 11 Cánh diều hay, chi tiết khác:
Bài 9: Lập trình sắp xếp nhanh
Bài 15: Cấu trúc dữ liệu danh sách liên kết và ứng dụng
Bài 1: Một số thao tác chỉnh sửa ảnh và hỗ trợ chỉnh sửa ảnh trong phần mềm GIMP
Xem thêm các chương trình khác:
- Soạn văn lớp 11 Cánh diều (hay nhất)
- Văn mẫu lớp 11 - Cánh diều
- Tóm tắt tác phẩm Ngữ văn 11 – Cánh diều
- Tác giả tác phẩm Ngữ văn 11 - Cánh diều
- Giải SBT Ngữ văn 11 – Cánh diều
- Bố cục tác phẩm Ngữ văn 11 – Cánh diều
- Giải Chuyên đề học tập Ngữ văn 11 – Cánh diều
- Nội dung chính tác phẩm Ngữ văn lớp 11 – Cánh diều
- Soạn văn 11 Cánh diều (ngắn nhất)
- Giải sgk Toán 11 – Cánh diều
- Giải Chuyên đề học tập Toán 11 – Cánh diều
- Lý thuyết Toán 11 - Cánh diều
- Giải sbt Toán 11 – Cánh diều
- Giải sgk Tiếng Anh 11 – ilearn Smart World
- Giải sbt Tiếng Anh 11 - ilearn Smart World
- Trọn bộ Từ vựng Tiếng Anh 11 ilearn Smart World đầy đủ nhất
- Giải sgk Vật lí 11 – Cánh diều
- Lý thuyết Vật lí 11 – Cánh diều
- Giải sbt Vật lí 11 – Cánh diều
- Giải Chuyên đề học tập Vật lí 11 – Cánh diều
- Giải sgk Hóa học 11 – Cánh diều
- Giải Chuyên đề học tập Hóa học 11 – Cánh diều
- Lý thuyết Hóa 11 - Cánh diều
- Giải sbt Hóa học 11 – Cánh diều
- Giải sgk Sinh học 11 – Cánh diều
- Lý thuyết Sinh học 11 – Cánh diều
- Giải Chuyên đề học tập Sinh học 11 – Cánh diều
- Giải sbt Sinh học 11 – Cánh diều
- Giải sgk Giáo dục Kinh tế và Pháp luật 11 – Cánh diều
- Giải Chuyên đề học tập Kinh tế pháp luật 11 – Cánh diều
- Lý thuyết Kinh tế pháp luật 11 – Cánh diều
- Giải sbt Kinh tế pháp luật 11 – Cánh diều
- Giải sgk Lịch sử 11 – Cánh diều
- Giải Chuyên đề học tập Lịch sử 11 – Cánh diều
- Lý thuyết Lịch sử 11 - Cánh diều
- Giải sbt Lịch sử 11 – Cánh diều
- Giải sgk Địa lí 11 – Cánh diều
- Giải Chuyên đề học tập Địa lí 11 – Cánh diều
- Lý thuyết Địa lí 11 - Cánh diều
- Giải sbt Địa lí 11 – Cánh diều
- Giải sgk Công nghệ 11 – Cánh diều
- Lý thuyết Công nghệ 11 - Cánh diều
- Giải sbt Công nghệ 11 – Cánh diều
- Giải sgk Giáo dục quốc phòng an ninh 11 – Cánh diều
- Lý thuyết Giáo dục quốc phòng 11 – Cánh diều
- Giải sbt Giáo dục quốc phòng 11 – Cánh diều
- Giải sgk Hoạt động trải nghiệm 11 – Cánh diều