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
 |  Xem: 3.391  |  Trả lời: 3
Ngày gửi: 18/08/2008 - 13:45  |  Câu hỏi liên quan
Trả lời

Danh sách trả lời (3)

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.

Mời bạn ghé thăm:
Ngày gửi: 18/08/2008 - 13:50
// 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";


}
Ngày gửi: 29/11/2009 - 11:41

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.

 

Ngày gửi: 16/03/2012 - 22:42
Trả lời

Đang được quan tâm nhất

Những thành viên tích cực trong tháng
(1 lượt cảm ơn)
(1 lượt cảm ơn)
(1 lượt cảm ơn)
(1 lượt cảm ơn)
(1 lượt cảm ơn)
(1 lượt cảm ơn)
season trung thu_ hỏi đáp
Cucre_hn