mình có 1 mảng char A[100] với A[i] các “chữ cái, số , kí tự, khoảng trắng…” , mình muốn chuyển A[i] đó sang mã morse , thì làm ntn để tốn ít dung lượng bộ nhớ nhất ạ ( chỉ chuyển chữ cái và số, còn lại giữ nguyên)
Chuyển mảng char sang mã Morse mà tốn ít bộ nhớ nhất
Bạn chép bảng Morse vào 36 (26+10) chuỗi
rồi dùng if để chọn range (đằng nào cũng phải tra), sau đó tra số.
char[] digits = {...}
, letters = {...}
Hồi lúc học chuyên môn Báo vụ (chuyên dùng Morse), mình được học gần như toàn bộ các mã của các kí tự và nhận ra: số tín hiệu tối đa của từng kí tự là 7. Mỗi mã chỉ có . và -, từ đây có thể liên tưởng đến việc lưu trong 1 byte cho mỗi kí tự; tỉ lệ 1:1.
Tức với 100 kí tự, bạn chỉ tối thêm 100 byte cho việc lưu mã morse.
Morse là variable-length nhưng không phải prefix-code, nên phải lưu độ dài từ mã. 5+3 chỉ encode được 26 - 1 = 63 code points. Dùng 2 pattern còn lại thì độ dài tối đa là 6, 127cp. Còn pattern cuối cùng thì nó ko phải Morse nữa rồi.
anh có thể bỏ ra chút thời gian giúp em được không ạ, chuyển phần mảng sang morse e chưa hiểu lắm
char[] digits = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q'
,'r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9'}
,
letters = {".-","-...", "-.-.", "-..",".", "..-.", "--.", "....", "..", ".---","-.-",
".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-","..-", "...-", ".--",
"-..-", "-.--", "--..", "-----", ".----", "..---", "...--","....-", ".....", "-....", "--...",
"---..", "----."}
}
digits là đổi từ 0 đến 9 ra Morse ấy 
Cơ chế dịch chuỗi sang mã morse là dịch từng kí tự chữ cái, số thành dấu chấm (dits) và gạch ngang (dash), dấu cách được dịch thành /, các kí tự được phân cách bằng khoảng trắng.
Đối với đoạn code trên thì tìm vị trí của một kí tự trong mảng digits (tên không hợp lí lắm?), giả sử gọi là n, rồi lấy phần tử thứ n trong mảng letters. Ngoài ra còn có một cách khác là dùng mã ASCII, dùng cách này thì không phải khai báo mảng digits
.
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?