Với giải Câu Fcs35 trang 59 SBT Tin học 11 Cánh diều chi tiết trong Bài 8: Lập trình một số thuật toán sắp xếp giúp học sinh dễ dàng xem và so sánh lời giải, từ đó biết cách làm bài tập Tin học 11. Mời các bạn đón xem:
Sắp xếp tiếng Việt Có một tập tiếng Việt chứa n từ
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 bài giải sách bài tập Tin học 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 Trong phòng thí nghiệm Hoá học, có n lọ mất nhãn. Lần này, em không cần dùng các chất thử để phân biệt, vì tình huống hiện tại khá đặc biệt: Nhận thấy tất cả dung dịch trong phòng đều là các hợp chất quen thuộc nằm trong chương trình Hoá học 11
Câu Fcs33 trang 57 SBT Tin học 11: Số lần đổi chỗ. Cho dãy số 4 gồm n số nguyên phân biệt: Ao, A,, A,,..., A n-1'
Câu Fcs34 trang 58 SBT Tin học 11: Sắp xếp tên sách tiếng Anh Một thư viện vừa nhập về một kho sách mới về ngoại ngữ gồm n quyển, nhưng các quyển sách được sắp xếp rất lộn xộn. Em hãy giúp thủ thư sắp xếp lại những quyển sách này theo thứ tự từ điển, để việc xếp lên giá sách được thuận tiện hơn.
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.
Câu Fcs36 trang 59 SBT Tin học 11: Phân bố phòng thi Một trường học có n lớp, mỗi lớp có x bạn học sinh. Giả sử tên khai sinh của các bạn chỉ gồm hai tiếng: họ (một tiếng) và tên (một tiếng).
Xem thêm các bài giải sách bài tập Tin học 11 Cánh diều hay, chi tiết khác:
Bài 6: Kiểm thử và sửa lỗi chương trình
Bài 7: Lập trình giải bài toán tìm kiếm
CÔNG TY TNHH ĐẦU TƯ VÀ DỊCH VỤ GIÁO DỤC VIETJACK
- Người đại diện: Nguyễn Thanh Tuyền
- Số giấy chứng nhận đăng ký kinh doanh: 0108307822, ngày cấp: 04/06/2018, nơi cấp: Sở Kế hoạch và Đầu tư thành phố Hà Nội.
2021 © All Rights Reserved.