Bài 33/2000 – Mã hoá văn bản
(Dành cho học sinh THCS)
Bài toán sau mô tả một thuật toán mã hoá đơn giản (để tiện ta lấy ví dụ tiếng Anh, các bạn có thể mở rộng cho tiếng Việt):
Tập hợp các chữ cái tiếng Anh bao gồm 26 chữ cái được đánh sô thứ tự từ 0 đến 25 như sau:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
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
Quy tắc mã hoá một ký tự như sau (lấy ví dụ ký tự X):
– Tìm số thứ tự tương ứng của ký tự ta được 23
– Tăng giá trị số này lên 5 ta được 28
– Tìm số dư trong phép chia số này cho 26 ta được 2
– Tra ngược bảng chữ cái ta thu được C.
a. Sử dụng quy tắc trên để mã hoá các dòng chữ sau:
PEACE
HEAL THE WORLD
I LOVE SPRING
b. Hãy tìm ra quy tắc giải mã các dòng chữ sau:
N FR F XYZIJSY
NSKTVRFYNHX
MFSTN SFYNTSFQ ZSNBJVXNYD
Program Ma_hoa;
Uses crt;
Var st: string;
Function MH(x: string): string;
Var Code, S: string;
i, c, j: integer;
Begin
Code:=’abcdefghijklmnopqrstuvwxyz’;
For j:=1 to length(x) do
Begin
If x[j]=’ ‘ then S:=S+’ ‘
Else For i:=1 to length(Code) do
If Code[i]=x[j] then
Begin
c:=((i+4) mod 26)+1;
S:=S+Code[c];
End;
End;
MH:=S;
End;
BEGIN
ClrScr;
Write(‘Nhap xau can ma hoa: ‘); Readln(st);
Writeln(‘Xau duoc ma hoa la: ‘,MH(st));
Readln;
END.
Cảm ơn bạn đã đọc câu trả lời của mk, chúc bạn học tốt! Cho mk câu trả lời hay nhất nha! Thanks!