Trang chủ Tin Học Lớp 9 Bài 3: Dãy số tăng (5,0 điểm) Cho một xâu...

Bài 3: Dãy số tăng (5,0 điểm) Cho một xâu dài không quá 150 ký tự gồm các chữ số từ 0 đến 9. Hãy viết chương trình tách xâu đã cho thành nhiều nhất các đoạn nh

Câu hỏi :

Bài 3: Dãy số tăng (5,0 điểm) Cho một xâu dài không quá 150 ký tự gồm các chữ số từ 0 đến 9. Hãy viết chương trình tách xâu đã cho thành nhiều nhất các đoạn nhỏ bằng cách chèn thêm các khoảng trắng vào xâu (không làm thay đổi thứ tự các chữ số) để tách xâu thành các từ mà thứ tự từ trái sang phải biểu thị một dãy các số tăng dần. Ví dụ: Cho xâu ‘18032017 ‘ sẽ cho xâu kết quả là: 1 8 032017 Dữ liệu vào là file STR.INP gồm 1 dòng là xâu cần xử lý. Dữ liệu ra là file STR.OUT gồm 1 dòng là xâu kết quả.

Lời giải 1 :

uses crt;

var s:string[150];f:text;

procedure khoitao;

begin

 assign(f,'daytang.inp');

 {$I-} reset(f); {$I+}

 if ioresult>0 then

  begin

   rewrite(f);reset(f);

  end;

 readln(f,s);close(f);

 assign(f,'Daytang.out');rewrite(f);

end;

function kt(x1,x2:string):boolean;

var e:integer;a,b:longint;

begin

 val(x1,a,e);val(x2,b,e);

 if a < b then kt:=true

 else kt:=false

end;

procedure xuly;

var s2,s3:string[50];s1:string;i,j,e:integer;a,b:longint; dung:boolean;

begin

 khoitao;

 s1:='';i:=1;

 if (s[1]='0') then

  while (s[i]='0') and (i<=length(s)) do inc(i);

  if (i>length(s)) or ((i<=length(s)) and (kt(copy(s,1,i-1),copy(s,i,length(s)-i+1))=false)) then

  writeln(f,s)

 else

  begin

   if i>=2 then

      s1:=copy(s,1,i-1)

   else s1:=s[1];if i=1 then inc(i);

    dung:=false;val(s1,a,e);s3:=s[i];val(s3,b,e);j:=i;

    while dung=false do

    begin

      while (a>=b) and (i<=length(s)) do

       begin

        s3:=copy(s,j,i-j+1);val(s3,b,e);inc(i);

       end;

      if (i<length(s)) and (kt(copy(s,j,i-j+1),copy(s,i,length(s)))=true) then

        begin

         s1:=s1+' '+s3;

         s2:=s3;val(s2,a,e);inc(i);s3:=s[i];val(s3,b,e);

         j:=i;inc(i);

        end

      else {if (i<length(s)) and (kt(copy(s,j,i),copy(s,i+1,length(s))=false) then}

       begin

          s1:=s1+' '+copy(s,j,length(s)) ;

          dung:=true;

          writeln(f,s1);

       end;

     end;

    end;

    close(f);

  end;

 

begin

 xuly;

end.

 

Thảo luận

-- bạn thêm $ vào chỗ khoitao chỗ ô vuông nha
-- sau '{'

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 :))

Copyright © 2021 HOCTAP247