Ví dụ Kiểu dữ liệu tệp đơn giản trong pascal

Ví dụ Kiểu dữ liệu tệp đơn giản trong pascal

Đây là một đề bài do bạn Nguyễn Gia Hân đề xuất, nó khá đơn giản để các bạn thực hành trên pascal. Tuy nhiên, về lý thuyết của phần này mình sẽ update sau bởi vì nó khá dài không thể giải thích ngay trong bài viết này được.

Đề bài của bạn: 

Cho tệp dữ liệu B.INP gồm 1 dòng chứa xâu ký tự a,tạo tệp B.OUT gồm 2 dòng:

+ Dòng 1 chứa xâu b được tạo từ xâu a bỏ các dấu cách.

+ Dòng 2 chứa xâu c được tạo từ xâu a chỉ dùng các ký tự số.

 


Cách làm như sau:

– Tạo một Procedure đọc dữ liệu từ tệp B.INP lên biến xâu a.

– Sau khi có được dữ liệu trong xâu a, chúng ta tiến hành bỏ dấu cách bằng cách lấy các ký tự <> ' ' để được xâu b.

– Đối với xâu c, chúng ta so sánh a[i] có nằm trong [‘0’..’9′] hay không => đúng thì cộng vào chuỗi c.

– Khi đã có được b và c chúng ta ghi chúng vào B.OUT với Procedure Xuat.

Chương trình của bạn như sau:

Program Nhap_Xuat_File;
Uses crt;
var i,m:integer;
a,b,c:string;
Procedure Nhap;
var f:text;
begin
     Assign(f,'B.INP');
     Reset(f);
     Readln(f,a);
     Close(f);
end;
Procedure Xuat;
var f:text;
begin
     Assign(f,'B.OUT');
     Rewrite(f);
     Writeln(f,b);
     Writeln(f,c);
     Close(f);
end;
Procedure Xoa_Cach(m:integer);
begin
     for i:=1 to m do
     if(a[i] <> ' ') then
              b:=b+a[i];
end;
Procedure Ky_Tu_So(m:integer);
begin
     for i:=1 to m do
     if(a[i] in [‘0’..’9′]) then
             c:=c+a[i];
end;

 

 

begin
     Nhap;
     m:=Length(a);
     Xoa_Cach(m);
     Ky_Tu_So(m);
     Xuat;
end.


Vì câu hỏi của bạn chỉ như vậy cho nên mình viết chương trình đơn giản không rườm rà. Các bạn nên lưu ý rằng, chúng ta có thể đọc nhiều dòng từ tệp B.INP nếu muốn và ghi chúng ra nhiều dòng hơn nữa nên cách làm sẽ phức tạp hơn. Đây chỉ là ví dụ đơn giản nên mình không tạo hàm ghi nhiều lần trên một xâu ký tự mà viết chúng thành 2 xâu b và c. Đón xem bài viết làm việc với Tệp dữ liệu để rõ hơn nhé.

Chúc bạn Nguyễn Gia Hân và các bạn độc giả học tốt môn Tin Học 11

Share this post:

Recent Posts

Leave a Comment