PDA

View Full Version : Kiểu dữ liệu xâu



lehang_gb1
07-12-2009, 16:09
1/ Nhập 2 xâu kí tự. Đếm số lần xuất hiện của xâu này trong xâu kia.
2/ Nhập n kí tự sao cho không có 2 kí tự nào trùng nhau (nếu trùng nhau yêu cầu nhập lại). In lại xâu đó.
3/ Nhập một số nguyên k dưới dạng xâu và 1 số k. Xóa đi k chữ số trong số nguyên đó sao cho số còn lại có giá trị bé nhất.

bumzunpilo
12-12-2009, 20:09
1/ Nhập 2 xâu kí tự. Đếm số lần xuất hiện của xâu này trong xâu kia.
2/ Nhập n kí tự sao cho không có 2 kí tự nào trùng nhau (nếu trùng nhau yêu cầu nhập lại). In lại xâu đó.
3/ Nhập một số nguyên k dưới dạng xâu và 1 số k. Xóa đi k chữ số trong số nguyên đó sao cho số còn lại có giá trị bé nhất.
bài 1, đọc kí tự đầu tiên của xâu s1, gọi nó là Fi nhá, tìm các vị trí có Fi trong xâu s2, nếu không có thì báo số lần xuất hiện là không <else> từ các vị trí đó đọc n kí tự của xâu s2 (n là độ dài của xâu s1) rồi so sánh xâu thôi, nếu trùng thì tăng biến đếm.

bài 2, nhập các kí tự vào và sắp xếp theo bảng mã ASCII, rồi dùng thuật toán tìm kiếm nhị phân để tìm xem kí tự nhập vào có bị trùng không.

bài 3, tớ chưa hiểu đề.

huysun
14-12-2009, 15:08
bài 1, đọc kí tự đầu tiên của xâu s1, gọi nó là Fi nhá, tìm các vị trí có Fi trong xâu s2, nếu không có thì báo số lần xuất hiện là không <else> từ các vị trí đó đọc n kí tự của xâu s2 (n là độ dài của xâu s1) rồi so sánh xâu thôi, nếu trùng thì tăng biến đếm.


bài 1 chưa đúng, hoặc tớ chưa hiểu ý bạn
tớ thì làm như sau:

(*)a:= pos(s1,s2);(vị trí đầu tiên của s1 trong s2)
if a<>0 then
begin
inc(d);
delete(s2,1,a); (xóa từ đầu đến vị trí a);
endl;

sau đó quay lại (*)cho đếnkhi a=0