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
Lời
giải
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