Câu hỏi

26/04/2013 22:04
Em có Bài tập về xâu kí tự. Các bác giúp em với
Em có bài này mong các bác hướng dẫn giúp em. Nhập 1 chuỗi từ bàn phím, in ra số lần xuất nhiều nhất của 1 kí tự trong chuỗi.
VD: Nhập chuỗi là: nguyen van thì kí tự "n" xuất hiện nhiều nhất trong chuỗi, in số lần xuất hiện ra và kí tự đó ra.
Mong các bác giúp em
ZiMaNo1
26/04/2013 22:04
VD: Nhập chuỗi là: nguyen van thì kí tự "n" xuất hiện nhiều nhất trong chuỗi, in số lần xuất hiện ra và kí tự đó ra.
Mong các bác giúp em
Danh sách câu trả lời (3)

PROGRAM DKT;
USES crt;
VAR S:STRING;
i,n,j,max:INTEGER;
A:ARRAY[-100..100] OF INTEGER;
B:ARRAY[-100..100] OF BOOLEAN;
BEGIN
write('Moi nhap xau S: ');
readln(S);
i:=1;
A[1]:=0;
n:=length(S);
FOR j:=1 TO 100 DO B[j]:=TRUE;
WHILE i<=n DO
BEGIN
FOR j:= n DOWNTO i DO
IF B[j] THEN
IF S[j]=S[i] THEN
BEGIN
A[i]:=A[i]+1;
B[j]:=FALSE;
END;
i:=i+1;
WHILE B[i]=FALSE DO
i:=i+1;
END;
max:=0;
FOR j:=1 TO n DO
IF max
FOR j:=1 TO n DO
IF a[j]=max THEN
writeln(S[j],' xuat hien nhieu nhat vs ',max,' lan');
readln;
END.
PROGRAM DKT;
USES crt;
VAR S:STRING;
i,n,j,max:INTEGER;
A:ARRAY[-100..100] OF INTEGER;
B:ARRAY[-100..100] OF BOOLEAN;
BEGIN
write('Moi nhap xau S: ');
readln(S);
i:=1;
A[1]:=0;
n:=length(S);
FOR j:=1 TO 100 DO B[j]:=TRUE;
WHILE i<=n DO
BEGIN
FOR j:= n DOWNTO i DO
IF B[j] THEN
IF S[j]=S[i] THEN
BEGIN
A[i]:=A[i]+1;
B[j]:=FALSE;
END;
i:=i+1;
WHILE B[i]=FALSE DO
i:=i+1;
END;
max:=0;
FOR j:=1 TO n DO
IF max
FOR j:=1 TO n DO
IF a[j]=max THEN
writeln(S[j],' xuat hien nhieu nhat vs ',max,' lan');
readln;
END.
PROGRAM DKT;
USES crt;
VAR S:STRING;
i,n,j,max:INTEGER;
A:ARRAY[-100..100] OF INTEGER;
B:ARRAY[-100..100] OF BOOLEAN;
BEGIN
write('Moi nhap xau S: ');
readln(S);
i:=1;
A[1]:=0;
n:=length(S);
FOR j:=1 TO 100 DO B[j]:=TRUE;
WHILE i<=n DO
BEGIN
FOR j:= n DOWNTO i DO
IF B[j] THEN
IF S[j]=S[i] THEN
BEGIN
A[i]:=A[i]+1;
B[j]:=FALSE;
END;
i:=i+1;
WHILE B[i]=FALSE DO
i:=i+1;
END;
max:=0;
FOR j:=1 TO n DO
IF max
whiteroses
26/04/2013 22:04
hoahong
26/04/2013 22:04
FOR j:=1 TO n DO
IF a[j]=max THEN
writeln(S[j],' xuat hien nhieu nhat vs ',max,' lan');
readln;
END.
PROGRAM DKT;
USES crt;
VAR S:STRING;
i,n,j,max:INTEGER;
A:ARRAY[-100..100] OF INTEGER;
B:ARRAY[-100..100] OF BOOLEAN;
BEGIN
write('Moi nhap xau S: ');
readln(S);
i:=1;
A[1]:=0;
n:=length(S);
FOR j:=1 TO 100 DO B[j]:=TRUE;
WHILE i<=n DO
BEGIN
FOR j:= n DOWNTO i DO
IF B[j] THEN
IF S[j]=S[i] THEN
BEGIN
A[i]:=A[i]+1;
B[j]:=FALSE;
END;
i:=i+1;
WHILE B[i]=FALSE DO
i:=i+1;
END;
max:=0;
FOR j:=1 TO n DO
IF max
FOR j:=1 TO n DO
IF a[j]=max THEN
writeln(S[j],' xuat hien nhieu nhat vs ',max,' lan');
readln;
END.
PROGRAM DKT;
USES crt;
VAR S:STRING;
i,n,j,max:INTEGER;
A:ARRAY[-100..100] OF INTEGER;
B:ARRAY[-100..100] OF BOOLEAN;
BEGIN
write('Moi nhap xau S: ');
readln(S);
i:=1;
A[1]:=0;
n:=length(S);
FOR j:=1 TO 100 DO B[j]:=TRUE;
WHILE i<=n DO
BEGIN
FOR j:= n DOWNTO i DO
IF B[j] THEN
IF S[j]=S[i] THEN
BEGIN
A[i]:=A[i]+1;
B[j]:=FALSE;
END;
i:=i+1;
WHILE B[i]=FALSE DO
i:=i+1;
END;
max:=0;
FOR j:=1 TO n DO
IF max
FOR j:=1 TO n DO
IF a[j]=max THEN
writeln(S[j],' xuat hien nhieu nhat vs ',max,' lan');
readln;
END.
PROGRAM DKT;
USES crt;
VAR S:STRING;
i,n,j,max:INTEGER;
A:ARRAY[-100..100] OF INTEGER;
B:ARRAY[-100..100] OF BOOLEAN;
BEGIN
write('Moi nhap xau S: ');
readln(S);
i:=1;
A[1]:=0;
n:=length(S);
FOR j:=1 TO 100 DO B[j]:=TRUE;
WHILE i<=n DO
BEGIN
FOR j:= n DOWNTO i DO
IF B[j] THEN
IF S[j]=S[i] THEN
BEGIN
A[i]:=A[i]+1;
B[j]:=FALSE;
END;
i:=i+1;
WHILE B[i]=FALSE DO
i:=i+1;
END;
max:=0;
FOR j:=1 TO n DO

// Nhap vao mot mang va tim gia tri xuat hien nhieu nhat
#include
int main()
{
int n,i,j,a[100],b[100],dem=0,demtg=0,tg1,tg2,so;
cout<<"Nhap n: ";cin>>n;
for (i=0; i<=n-1;i++)
{
cout<<"Nhap phan tu thu "<>a;
}
for (i=0; i<=n-1;i++)
{
dem=0;
for (j=i; j<=n-1;j++)
if (a[j]==a) {dem++;tg1=j;}
if(dem>demtg) {demtg=dem; so=0;b[0]=a;}
else
if(dem==demtg)
{ so++;
b[so]=a;
}
}
so++;
cout<<"Gia tri xuat hien nhieu nhat la :";
for (i=0;icout<<<" ";
cout<<" xuat hien "<
}
#include
int main()
{
int n,i,j,a[100],b[100],dem=0,demtg=0,tg1,tg2,so;
cout<<"Nhap n: ";cin>>n;
for (i=0; i<=n-1;i++)
{
cout<<"Nhap phan tu thu "<>a;
}
for (i=0; i<=n-1;i++)
{
dem=0;
for (j=i; j<=n-1;j++)
if (a[j]==a) {dem++;tg1=j;}
if(dem>demtg) {demtg=dem; so=0;b[0]=a;}
else
if(dem==demtg)
{ so++;
b[so]=a;
}
}
so++;
cout<<"Gia tri xuat hien nhieu nhat la :";
for (i=0;i
cout<<" xuat hien "<
}

1. Khai báo 2 mảng m1, m2.
a. Mảng 1 lưu các ký tự xuất hiện trong xâu, bỏ qua ký tự lặp (nếu là ASCII từ bàn phím thì trên lý thuyết mảng chỉ có tối đa 256 phần tử, mặc dầu sẽ không bao giờ tới được).
b. Mảng 2 lưu tần số xuất hiện của ký tự trong xâu được nhập đó.
2. Duyệt xâu từ đầu đến cuối xau i=0,length-1, đồng thời đẩy từng ký tự nếu chưa có vào mảng 1, bằng cách tìm xau trong m1 m1[j]=xau, khởi tạo tần số xuất hiện m2[j]=0, nếu có cập nhật tần số xuất hiện m2[j]=m2[j]+1.
3. Một vòng lặp tìm max trong m2 có chỉ số k, in ra kết quả ký tự m1[k] có tần số xuất hiện m2[k] lớn nhất. Có thể gộp bước này vào bước 2 luôn để xác định max cho tối ưu, nhưng code viết sẽ hơi khó đọc.
a. Mảng 1 lưu các ký tự xuất hiện trong xâu, bỏ qua ký tự lặp (nếu là ASCII từ bàn phím thì trên lý thuyết mảng chỉ có tối đa 256 phần tử, mặc dầu sẽ không bao giờ tới được).
b. Mảng 2 lưu tần số xuất hiện của ký tự trong xâu được nhập đó.
2. Duyệt xâu từ đầu đến cuối xau i=0,length-1, đồng thời đẩy từng ký tự nếu chưa có vào mảng 1, bằng cách tìm xau trong m1 m1[j]=xau, khởi tạo tần số xuất hiện m2[j]=0, nếu có cập nhật tần số xuất hiện m2[j]=m2[j]+1.
3. Một vòng lặp tìm max trong m2 có chỉ số k, in ra kết quả ký tự m1[k] có tần số xuất hiện m2[k] lớn nhất. Có thể gộp bước này vào bước 2 luôn để xác định max cho tối ưu, nhưng code viết sẽ hơi khó đọc.
Trả lời câu hỏi
Câu hỏi lĩnh vực Lập trình
Rao vặt Siêu Vip