Mk mời mod cường làm thử bài này ạ ????
Cô Hoa – Một nhân viên phát hành sách đã sắp xếp sách giáo khoa lớp 7 theo tên cuốn sách trên kệ sách (được đánh số hiệu từ 1 đến n). Tuy nhiên, sau một thời gian phục vụ, các cuốn sách bị khách hàng xáo trộn vị trí nên cô Hoa gặp khó khăn trong thống kê số sách hiện còn. Cô Hoa đã ghi chép lại tên các cuốn sách hiện có trên mỗi kệ.
Yêu cầu: Em hãy giúp cô Hoa tìm một cuốn sách.
Dữ liệu vào: Tệp SACH.TXT chứa thông tin ghi chép số hiệu kệ và tên sách. Cứ mỗi dòng trong tệp lưu thông tin theo cấu trúc: Ký tự đầu tiên là số hiệu kệ, tiếp theo là tên các sách được phân biệt bằng dấu cách trống; mỗi kệ chỉ xuất hiện một lần trong tệp. Thông tin cuốn sách cần tìm do người dùng nhập vào.
Kết quả: Màn hình hiển thị số cuốn sách đã tìm được (nếu có) và các vị trí (kệ) đặt sách cần tìm.
Ví dụ:
SACH.TXT Màn hình
2toán văn địa toán địa Sách cần tìm; toán
5sử văn Có 4 cuốn sách toán trên các kệ:2, 3.
3sinh hóa toán anh tin toán
uses crt;
var d:text; n,i,kt,j,m,dem:longint; s,k:string; a:array[1..1000,1..1000]of string; b,c:array[1..10000]of longint;
begin
clrscr;
write(‘Sach can tim:’);readln(k);
assign(d,’SACH.TXT’);reset(d);
while not(eof(d)) do
begin
readln(d,n,s);
b[n]:=1;
for i:=2 to length(s) do
if s[i]=’ ‘ then inc(b[n])
else
begin
a[n,b[n]]:=a[n,b[n]]+s[i];
if a[n,b[n]]=k then
begin
kt:=0; inc(dem);
for j:=1 to m do if c[j]=n then kt:=1;
if kt=0 then
begin
inc(m);
c[m]:=n;
end;
end;
end;
end;
write(‘Co ‘,dem,’ cuon sach ‘,k,’ trren cac ke:’);
for i:=1 to m do write(c[i],’,’);
close(d);
readln
end.
/////////////////////////////////////////////////////////
Bài này mình cũng có giải bên kia rồi nên không phải là copy của người khác đâu nhé!!!
Một số text cho bạn tham khảo: