Trang chủ Tin Học Lớp 9 Mỗi từ trong ngôn ngữ lập trình được xem là...

Mỗi từ trong ngôn ngữ lập trình được xem là một dãy các kí tự liên tiếp nhau và không chứa kí tự trống (dấu cách). Một xâu kí tự có thể có nhiều hơn một từ, mỗ

Câu hỏi :

Mỗi từ trong ngôn ngữ lập trình được xem là một dãy các kí tự liên tiếp nhau và không chứa kí tự trống (dấu cách). Một xâu kí tự có thể có nhiều hơn một từ, mỗi từ trong một xâu kí tự phải cách nhau ít nhất một kí tự trống. Ví dụ: Cho xâu kí tự S: “Thanh Pho Da Nang” Xâu S gồm có 4 từ được xác định như sau (Hình đính kèm): Hai người bạn A và B muốn trao đổi một thông điệp cho nhau nhưng lại không muốn người khác đọc vào hiểu ngay nên nghĩ ra một cách như sau: Xáo trộn trật tự của các từ trong một câu. Tất nhiên, để bạn của mình hiểu được thì cần phải có một quy tắc “giải mã” thông điệp đó. Quy tắc giải mã cũng khá đơn giản là: Mỗi câu trong thông điệp có n từ sẽ được kèm với một dãy số gồm n số nguyên dương đôi một khác nhau và không lớn hơn n. Trong dãy số đó, nếu số thứ i có giá trị là j thì từ thứ j trong câu thông điệp trên sẽ chuyển thành từ thứ i trong câu thông điệp cần tìm. Yêu cầu: Lập trình để giải mã một thông điệp cho trước. Input: File văn bản MESS.INP gồm 2 dòng: Dòng đầu ghi một xâu kí tự có không quá 255 kí tự là thông điệp được gởi đi. Trong xâu kí tự này có không quá 50 từ, mỗi từ có không quá 30 kí tự. Dòng thứ hai ghi một dãy các số nguyên dương đôi một khác nhau dùng để giải mã thông điệp trên. Output: File văn bản MESS.OUT gồm một dòng ghi xâu kí tự là thông điệp đã được giải mã. Ví dụ (Hình đính kèm) image

image

Lời giải 1 :

Const Fi='MESS.INP';
      Fo='MESS.OUT';
Var f,g: text;
    St: String;
    A: array[1..255] of longint;
    B: array[1..255] of string;
    S,i,k: longint;
Begin
        Assign(f,Fi); Reset(f);
        Assign(g,Fo); Rewrite(g);
        Readln(f,St);
        While St[1]=#32 do Delete(St,1,1);
        While St[length(St)]=#32 do Delete(St,length(St),1);
        While pos(#32#32,St)<>0 do Delete(St,pos(#32#32,St),1);

        s:=1;
        For i:=1 to length(St) do
                If St[i]=#32 then inc(s);
        For i:=1 to s do
                Read(f,A[i]);

        k:=1;
        For i:=1 to length(St) do
                If St[i]<>#32 then B[k]:=B[k]+St[i]
                Else inc(k);
        For i:=1 to s do
                Write(g,B[A[i]],' ');
        Close(f);
        Close(g);
End.

Thảo luận

Lời giải 2 :

const fi='mess.inp';
      fo='mess.out';
var st:string;
    i,d,so:byte;
    stt: array [1..50] of byte;
    chu: array [1..50] of string;
begin
        assign(input,fi);
        reset(input);
        readln(st);
        for i:=1 to length(st) do if st[i] = ' ' then inc(so);
        inc(so);
        for i:=1 to so do read(stt[i]);
        close(input);
        inc(d);
        for i:= 1 to length(st) do
                if st[i] <> ' ' then chu[d]:= chu[d]+st[i]
                        else inc(d);
        assign(output,fo);
        rewrite(output);
        for i:=1 to so do
                write(chu[stt[i]],' ');
        close(output);

end.

Bạn có biết?

Tin học, tiếng Anh: informatics, tiếng Pháp: informatique, là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng (ảo). Với cách hiểu hiện nay, tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin.

Nguồn : Wikipedia - Bách khoa toàn thư

Tâm sự 9

Lớp 9 - Là năm cuối ở cấp trung học cơ sở, sắp phải bước vào một kì thi căng thẳng và sắp chia tay bạn bè, thầy cô và cả kì vọng của phụ huynh ngày càng lớn mang tên "Lên cấp 3". Thật là áp lực nhưng các em hãy cứ tự tin vào bản thân là sẻ vượt qua nhé!

Nguồn : ADMIN :))

Liên hệ hợp tác hoặc quảng cáo: gmail

Điều khoản dịch vụ

Copyright © 2021 HOCTAPSGK