Ứng dụng   Thông báo   Hỗ trợ   Đăng ký   Đăng nhập
Đăng hỏi đáp

Em có Bài tập về xâu kí tự. Các bác giúp em với

tuyendung_02 18/08/2008 - 13:45

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
Câu hỏi này hữu ích với bạn? Cảm ơn
3651
Trả lời (3)
Bình luận bằng Facebook (3) | Bình luận bằng ID Vatgia (3)

Nhận tiền mua hàng đến 30.000đ/ngày khi trả lời tích cực

Vui lòng đăng nhập ID VATGIA để gửi trả lời của bạn

batdongsan

18/08/2008 - 13:50
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.
Đọc thêm
Bình luận này hữu ích với bạn? Cảm ơn

Báo vi phạm

luan

29/11/2009 - 11:41
// Nhap vao mot mang va tim gia tri xuat hien nhieu nhat
#include <iostream.h>
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 "<<i<<" cua mang: ";cin>>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<so;i++)
cout<<b<<" ";
cout<<" xuat hien "<<demtg<<" lan";


}
Đọc thêm
Bình luận này hữu ích với bạn? Cảm ơn

Báo vi phạm

Nguyễn Mạnh Linh

16/03/2012 - 22:42

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<a[j] THEN BEGIN max:=a[j];i:=j; END;
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<a[j] THEN BEGIN max:=a[j];i:=j; END;
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<a[j] THEN BEGIN max:=a[j];i:=j; END;
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<a[j] THEN BEGIN max:=a[j];i:=j; END;
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<a[j] THEN BEGIN max:=a[j];i:=j; END;
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<a[j] THEN BEGIN max:=a[j];i:=j; END;
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<a[j] THEN

BEGIN max:=a[j];

i:=j;

END;

FOR j:=1 TO n DO

IF a[j]=max THEN

writeln(S[j],' xuat hien nhieu nhat vs ',max,' lan');

readln;

END.

Đọc thêm
Bình luận này hữu ích với bạn? Cảm ơn

Báo vi phạm