Thứ Bảy, 26 tháng 5, 2012

In ra tệp các phần tử xuất hiện trong tệp từ k lần trở lên

Nhập một dãy A (mỗi số chỉ xuất 1 lần) có N (< 40) số tự nhiên và 1 số K. Hãy xuất ra các phần tử có số lần xuất hiện trong dãy A từ K lần trở lên.
Dữ liệu nhập: file DAYSO.INP:
- Dòng 1: 2 số n và k cách nhau bởi 1 dấu cách.
- Dòng 2: dãy A.
Dữ liệu ra: file DAYSO.OUT: Xuất các số thỏa điều kiện trên.


uses crt;
var a,b:array[0..100] of integer;
    n,j,i,k:integer;
    f:text;

Procedure docf;
 begin
  assign(f,'C:\DAYSO.INP');
  reset(f);
  i:=0;
     read(f,n);
     readln(f,k);
     While not eof(f) do
      begin
        inc(i);
        read(f,a[i]);
      end;
      close(f);
  end;

Procedure xuly;
 begin
 assign(f,'C:\DAYSO.OUT');
 rewrite(f);
 FillChar(b,SizeOf(b),0);
   For i:=1 to n do inc(b[a[i]]);
   For i:=1 to n do
        if (b[i]<>0) (b[i]>=k) then
           write(f,i,' ');
  close(f);
end;

BEGIN
 clrscr;
 docf;
 xuly;
 readln 
end.

Chú thích: 
- Hàm Fillchar(x,sizeof(x),i): điền lần lượt các byte của dữ liệu này bằng giá trị byte của i (i được coi là chiếm một byte).
Như vậy, đối với mảng kiểu integer hay longint (cả số cũng vậy), máy sẽ điền lần lượt các byte của dữ liệu:
Fillchar 1=00000001 (1 byte= 8 bit -> phải có đủ 8 chữ số cả 0 và 1).
- Sizeof(x): Trả về kích thước của biến trong bộ nhớ.

Không có nhận xét nào:

Đăng nhận xét

Bài đăng phổ biến