Bài tập  /  Bài đang cần trả lời

Viết chương trình pascal Hoán vị ký tự theo khóa - Tên chương trình GRCAE

viết chương trình pascal Hoán vị ký tự theo khóa - Tên chương trình GRCAE.???

Nhập vào xâu S chỉ chứa các ký tự là chỉ cái in thường và khoảng trắng.

Cho trước khóa m là một hoán vị của n số (2<n<18). Để mã hóa một xâu ký tự ta có thể chia xâu thành từng nhóm từ trái sang phải mỗi nhóm có n ký tự; nếu nhóm cuối không đủ n ký tự thì ta có thể thêm các ký tự trắng vào sau cho đủ. Sau đó hoán vị các ký tự trong từng nhóm theo khóa, ghép các nhóm xâu lại theo thứ tự ta được một xâu đã mã hóa. Hãy viết chương trình mã hóa một xâu kí tự cho trước.

Ví dụ: Với n=8 và khóa m=87345621, thực mã hóa xâu S = “hello every body” như sau:

Tách xâu S thành các xâu mỗi xâu có 8 ký tự:

S1 = “hello ev”; S2 = “ery o body”

Thực hiện mã hóa xâu S1, S2 theo khóa m ta được S1’ và S2’:

S1’ = “vello eh”; S2’ =”ydy bore”

Input: GRCAE.INP

· Dòng 1: số nguyên n (2<n<18) và m (m là số nguyên có n chữ số).

· Dòng 2: ghi xâu cần mã hóa (độ dài xâu <=10^5).

Ouput: GRCAE.OUT

· Mỗi dòng ghi 1 xâu có n ký tự đã được mã hóa.

Ví dụ:

GRCAE.INP GRCAE.OUT

8 87345621

hello every body vello eh ydy bore
1 trả lời
Hỏi chi tiết
205
Tham khảo câu trả lời từ Trợ lý ảo Lazi
Đây là một chương trình Pascal để mã hóa một xâu ký tự theo khóa đã cho:

```pascal
program GRCAE;

const
MAX = 100000;

var
n, m: integer;
S, S1, S2: string;
i, j, k, len: integer;
encodedS: array[1..MAX] of string;

procedure Swap(var a, b: char);
var
temp: char;
begin
temp := a;
a := b;
b := temp;
end;

procedure EncodeString(var str: string; key: string);
var
i, j, k: integer;
begin
k := 1;
for i := 1 to Length(str) do
begin
if (str[i] <> ' ') then
begin
str[i] := key[StrToInt(key[k])];
k := k + 1;
end;
end;
end;

begin
// Đọc dữ liệu từ file input
assign(input, 'GRCAE.INP');
reset(input);
readln(n, m);
readln(S);
close(input);

// Tách xâu S thành các xâu con có độ dài n
len := Length(S);
j := 1;
for i := 1 to len do
begin
if (i mod n = 0) or (i = len) then
begin
S1 := copy(S, j, i - j + 1);
j := i + 1;
encodedS[(i div n) + 1] := S1;
end;
end;

// Mã hóa từng xâu con theo khóa m
for k := 1 to (len div n) + 1 do
begin
EncodeString(encodedS[k], IntToStr(m));
end;

// Ghi kết quả vào file output
assign(output, 'GRCAE.OUT');
rewrite(output);
for k := 1 to (len div n) + 1 do
begin
writeln(encodedS[k]);
end;
close(output);
end.
```

Để chạy chương trình, bạn cần tạo một file input có tên "GRCAE.INP" và nhập dữ liệu theo định dạng đã cho. Sau đó, chạy chương trình và kết quả sẽ được ghi vào file output có tên "GRCAE.OUT".
2
0
muadong nắng nhờ
05/01 19:33:53
+5đ tặng
program GRCAE;

const
  MAX = 100000;

var
  n, m: integer;
  key: array[1..17] of integer;
  inputStr: string;

procedure HoanViChuoi(inputStr: string; n: integer; key: array of integer);
var
  len, numGroups, i, j, k: integer;
  groups, encodedGroups: array of string;
begin
  len := Length(inputStr);
  numGroups := len div n;

  // Tạo và chia thành các nhóm
  SetLength(groups, numGroups);
  k := 1;
  for i := 1 to numGroups do
  begin
    groups[i] := Copy(inputStr, k, n);
    k := k + n;
  end;

  // Hoán vị từng nhóm theo khóa
  SetLength(encodedGroups, numGroups);
  for i := 1 to numGroups do
  begin
    encodedGroups[i] := '';
    for j := 1 to n do
      encodedGroups[i] := encodedGroups[i] + groups[i][key[j]];
  end;

  // Hiển thị kết quả
  for i := 1 to numGroups do
    Writeln(encodedGroups[i]);
end;

begin
  // Đọc dữ liệu từ file GRCAE.INP
  Assign(Input, 'GRCAE.INP');
  Reset(Input);
  Readln(n, m);
  for var i := 1 to n do
    Read(key[i]);
  Readln; // Đọc dòng thừa
  Readln(inputStr);
  Close(Input);

  // Mã hóa xâu và hiển thị kết quả vào file GRCAE.OUT
  Assign(Output, 'GRCAE.OUT');
  Rewrite(Output);
  HoanViChuoi(inputStr, n, key);
  Close(Output);
end.
 

Mở khóa để xem toàn bộ nội dung trả lời

(?)
Bạn đã đạt đến giới hạn của mình. Bằng cách Đăng ký tài khoản, bạn có thể xem toàn bộ nội dung trả lời
Cải thiện điểm số của bạn bằng cách đăng ký tài khoản Lazi.
Xem toàn bộ các câu trả lời, chat trực tiếp 1:1 với đội ngũ Gia sư Lazi bằng cách Đăng nhập tài khoản ngay bây giờ
Tôi đã có tài khoản? Đăng nhập

Bạn hỏi - Lazi trả lời

Bạn muốn biết điều gì?

GỬI CÂU HỎI
Học tập không giới hạn cùng học sinh cả nước và AI, sôi động, tích cực, trải nghiệm
Trắc nghiệm Lập trình Lớp 9 mới nhất

Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi

Vui Buồn Bình thường

Học ngoại ngữ với Flashcard

×
Trợ lý ảo Trợ lý ảo
×
Gia sư Lazi Gia sư