Tin học Mã hoá xâu trong pascal

Xxgdrgn48

Học sinh mới
Thành viên
12 Tháng mười một 2019
2
1
6
21
Thanh Hóa
Thpt Thường Xuân 2
[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ác bạn có thể giúp mình bài này được không
Hãy mã hoá xâu với quy tắc như sau
- xâu mã hoá chỉ lưu lại các kí tự chữ cái xuất hiện đầu tiên.
- giá trị mật mã của xâu được tính bằng tổng số lần xuất hiện của các kí tự có tần suất xuất hiện lớn hơn 1 lần.
VD: posts and telecommunications
institute of technology = 41 postandelcmuifhgy
Cảm ơn rất nhiều ạ’ㅅ’
 

Trâm Nguyễn Thị Ngọc

Giải Nhất event Thế giới Sinh học 2
Thành viên
13 Tháng mười 2018
1,523
1,339
241
19
Quảng Trị
Trường TH&THCS Hải Ba
Các bạn có thể giúp mình bài này được không
Hãy mã hoá xâu với quy tắc như sau
- xâu mã hoá chỉ lưu lại các kí tự chữ cái xuất hiện đầu tiên.
- giá trị mật mã của xâu được tính bằng tổng số lần xuất hiện của các kí tự có tần suất xuất hiện lớn hơn 1 lần.
VD: posts and telecommunications
institute of technology = 41 postandelcmuifhgy
Cảm ơn rất nhiều ạ’ㅅ’
Mã:
Var
     s:string;a:char;i,t,j,d:integer;
Begin
     Readln(s);
     For i:=1 to length(s) do
           if s[i] in ['A'..'Z'] then s[i]:=chr(ord(s[i])+32)
          else if s[i]=#32 then delete(s,i,1);
     t:=0;
     For a:='a' to 'z' do
        begin
            d:=0;
            For i:=1 to length(s) do
                 if s[i]=a then d:=d+1;
            If d>1 then t:=t+d;
       end;
     For i:=1 to length(s) do
          For j:=i+1 to length(s)-1 do
                If s[i]=s[j] then delete(s,j,1);
     Write(t,' ',s);
  readln
End.
 
Last edited:

Xxgdrgn48

Học sinh mới
Thành viên
12 Tháng mười một 2019
2
1
6
21
Thanh Hóa
Thpt Thường Xuân 2
...Em không hiểu các vd lắm nên em làm theo cách em hiểu ạ, chị xem đã đúng chưa :)
Mã:
Var
    S:string;a:char;i,t,d:integer;
Begin
   Readln(s);
   While s[1]=#32 do delete(s,1,1);
   While pos(#32#32,s)<>0 do
        Delete(s,pos(#32#32,s),1);
   While s[length(s)]=#32 do
        Delete(s,length(s),1);
   T:=0;
   For i:=1 to length(s) do s[i]:=upcase(s[i]);
   For a:='A' to 'Z' do
        Begin
            D:=0;
            For i:=1 to length(s) do
                   If s[i]=a then d:=d+1;
             If d>1 then t:=t+d;
         End;
    Write('mat ma la:',t);
   Readln
End.
P/s: Chị làm theo cách này hoặc sử dungh một mảng A:array['A'..'Z'] để đếm số lần xh cũng được ^^
———
Bài này hình như không đúng vì đề yêu cầu đưa ra xâu đã được mã hoá. Ví dụ: aaaaxccdeff (tương đương với 4ax2cde2f). Cộng các chỉ số lại được xâu 8 axcdef
 

Trâm Nguyễn Thị Ngọc

Giải Nhất event Thế giới Sinh học 2
Thành viên
13 Tháng mười 2018
1,523
1,339
241
19
Quảng Trị
Trường TH&THCS Hải Ba
———
Bài này hình như không đúng vì đề yêu cầu đưa ra xâu đã được mã hoá. Ví dụ: aaaaxccdeff (tương đương với 4ax2cde2f). Cộng các chỉ số lại được xâu 8 axcdef
Hì, là do em đọc đề không kỹ ạ :p. Code em đã sửa rồi ạ. Chị xem đã đúng chưa
 
Top Bottom