Đảo từ trong văn bản

44 views
Skip to first unread message

tienph...@gmail.com

unread,
Feb 22, 2013, 10:25:40 PM2/22/13
to thcsthait...@googlegroups.com

Với một văn bản cho trước bao gồm các từ, dấu chấm câu và các ký hiệu khác. Từ trong văn bản là một chuỗi liên tiếp các ký tự chữ hoa hoặc chữ thường trong bảng chữ cái.

Yêu cầu: Hãy viết theo thứ tự ngược tất cả các từ của văn bản, các dấu câu và ký tự khác không cần thay đổi.

Dữ liệu: Vào từ file văn bản TEXT.INP chứa văn bản ban đầu gồm một hay nhiều dòng, mỗi dòng có  không quá 255 ký tự, dòng trong file có thể đến 1000.

Kết quả: Ghi ra file văn bản TEXT.OUT chứa văn bản mà các kí tự đã bị đảo ngược.

Ví dụ:

TEXT.INP

TEXT.OUT

This   is an example.

sihT   si na elpmaxe.

tienph...@gmail.com

unread,
Feb 22, 2013, 10:26:14 PM2/22/13
to thcsthait...@googlegroups.com, tienph...@gmail.com
var
str:string;

procedure input(var str:string);
var
f:text;
begin
    assign(f,'text.input');
    reset(f);
    read(f,str);
    close(f);
end;

procedure daochuoi(str:string);
var
chucai:set of char;
s,kq:string;
l,i:integer;
f:text;
   begin
        chucai:=['A'..'Z','a'..'z'];
        s:='';
        kq:='';
        l:=length(str);
        for i:=1 to l do
           if str[i] in chucai then
              s:=str[i]+s
           else
                begin
                  kq:=kq+s+str[i] ;
                  s:='';
                end; 
           kq:=kq+s; 
           
        assign(f,'text.out');
        rewrite(f);
        write(f,kq);
        close(f);
   end;

begin
input(str);
daochuoi(str);
end.

tienph...@gmail.com

unread,
Feb 24, 2013, 10:55:47 PM2/24/13
to thcsthait...@googlegroups.com, tienph...@gmail.com
Do bài toán yêu cầu là trong file Text.inp có thể có nhiều dòng do đó đoạn code bài trên sửa lại như sau
var
s:string;

function daochuoi(s:string):string;
var
chucai:set of char;
stam,kq:string;
l,i:integer;
   begin
        chucai:=['A'..'Z','a'..'z'];
        stam:='';
        kq:='';
        l:=length(s);
        for i:=1 to l do
           if s[i] in chucai then
              stam:=s[i]+stam
           else
                begin
                  kq:=kq+stam+s[i] ;
                  stam:='';
                end; 
           kq:=kq+stam;
  daochuoi:=kq;  
       
   end;
Procedure xuli(s:string);
var
f1,f2:text;
begin
assign(f1,'text.inp');
reset(f1);
assign(f2,'text.out');
rewrite(f2);
while not eof(f1) do
begin
readln(f1,s);
writeln(f2,daochuoi(s));
s:='';
end;
close(f1);
close(f2);
end;
begin
xuli(s);
end.


On Saturday, February 23, 2013 10:25:40 AM UTC+7, tienph...@gmail.com wrote:
Reply all
Reply to author
Forward
0 new messages