Bài tập về khoá mã

V

vppro_97

[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

Cô giáo mình cho về nhà làm nhưng mình chẳng hiểu gì cả. Làm hộ mình nhé!
Cho trước khoá là một hoán vị của n số 123...n. Khi đó để mã hoá một xâu kí tựta có thể chia xâu thành từng nhóm n kí tự (riêng nhóm cuối cùng nếu không đủ n kí tự thì ta có thể thêm các dấu cách vào cho đủ) rồi hoán vị các kí tự trong từng nhóm.
VD: với khoá 3241 thì ta có thể mã hoá xâu 'english' thành 'gnlehs i'.
Dữ liệu nhập vào từ file keyc.inp gồm:
-Dòng 1: chứa một số tự nhiên n(1<n<9)
-Dòng 2: chứa khoá mã là một hoán vị của n
-Dong 3: chứa xâu kí tự cần được mã hoá
Kết quả ghi ra file keyc.out gồm xâu kí tự đã được mã hoá.
 
Last edited by a moderator:
P

poseidon225

Procedure docfile;
Begin
Assign(f,'kevc.inp');
reset(f);
readln(f,n);
readln(f,code); ( code là kiểu String )
readln(f,s);
close(f);
end;
Procedure chia; ( chia xâu thành từng nhóm);
var i:integer;
Begin
if (length(s)mod n)<>0 then For i:=1 to (length(s)mod n) do s:=s+' ';
For i:=0 to (length(s)div n)-1 do
a:=copy(s,4*i+1,n); ( a là mảng kiểu chuỗi )
end;
Function xuly(a:string):string;
Var i:integer;
Begin
xuly:=ord(0); (cái này là theo kinh nghiệm mình làm bằng freepascal)
For i:=1 to n do
xuly:=xuly+s[ord(code)-48];
end;
Procedure mahoa;
var i:integer;
kg:string;
begin
kq:=ord(0);
For i:=1 to n do
kq:=kq+xuly(a);
Assign(f,'keyc.out');
rewrite(f);
write(f,kq);
close(f);
end;
Begin
docfile;
mahoa;
readln;
end.

( mình chưa compile thử nên hem chắc đúng )
 
Top Bottom