Tin học Bài tập chuỗi ký tự

D

dungsihh

[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

moi ngưòi nếu đọc bài viêt này thì cố gắng giúp mình naz
ban hãy viêt chương trinh nhập vào xâu A và đưa ra màn hình số lượng các kí tự khác nhau co trong xau, phân biệt cả chữ hoa và chữ thường, vi du: pascal co so luong ki tu khac nhau la 5, con PAscal co so ki tu khác nhau là 7
Thanhkx moi người nhiểu lắm
 
A

auauau97

Uses crt;
var st:string;
i,dem:longint;
begin
clrscr;
write('nhap xau:');
readln(st);
dem:=0;
for i:=1 to length(st) do
if st<>st[i+1] then dem:=dem+1;
write('so lan:',dem);
readln;
end.
 
Last edited by a moderator:
W

wind_naruto

Hài, mình đã đọc nhiều bài của bạn auau97, bạn có thể khí viết ct thì nói qua về thuật toán để mọi người cùng hiểu được ko.
Ờ hình như lần trước mình làm bài này rồi mà
Thuật toán của tớ là thế này: nếu có những kí tự giống nhau thì tớ del còn để lại 1 kí tự đó. rồi length(s) là số kí tự khác nhau của nó.
PHP:
Var s:string;
i,j:byte;
kt:boolean;
Begin
Write('nh?p xâu: '); Readln(S);
if length(s)=1 then write('Có m?t ky t? khác nhau trong xâu v?a nh?p');
if length(s)=0 then write('B?n nh?p xâu r?ng');
if length(s)>=2 then
begin j:=1; i:=2;
kt:=true;
While kt=true do
Begin
if s[j]=s[i] then delete(s,i,1);
i:=i+1;
if i>length(s) then begin j:=j+1; i:=j+1 end;
if j>=(length(s)-1) then kt:=false;
end;
Write('S? kí t? khác nhau là: ',length(s));
End;

readln;
End.
 
A

auauau97

Hài, mình đã đọc nhiều bài của bạn auau97, bạn có thể khí viết ct thì nói qua về thuật toán để mọi người cùng hiểu được ko.
Ờ hình như lần trước mình làm bài này rồi mà
Thuật toán của tớ là thế này: nếu có những kí tự giống nhau thì tớ del còn để lại 1 kí tự đó. rồi length(s) là số kí tự khác nhau của nó.
PHP:
Var s:string;
i,j:byte;
kt:boolean;
Begin
Write('nh?p xâu: '); Readln(S);
if length(s)=1 then write('Có m?t ky t? khác nhau trong xâu v?a nh?p');
if length(s)=0 then write('B?n nh?p xâu r?ng');
if length(s)>=2 then
begin j:=1; i:=2;
kt:=true;
While kt=true do
Begin
if s[j]=s[i] then delete(s,i,1);
i:=i+1;
if i>length(s) then begin j:=j+1; i:=j+1 end;
if j>=(length(s)-1) then kt:=false;
end;
Write('S? kí t? khác nhau là: ',length(s));
End;

readln;
End.

Thanks các bạn đã nhắc nhở, mình sẽ rút kinh nghiệm !
à, lần sau bạn nên viết các câu lệnh trong 1 vòng begin..end; thì ấn cách 2 lần nhé (chi nó dễ đọc hơn ấy mà !)
 
Top Bottom