VicoTas
Câu hỏi
Hin Hin89
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

Danh sách câu trả lời (3)
avatar ZiMaNo1 26/04/2013 22:04

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
           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
         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

                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.

 

Link whiteroses 26/04/2013 22:04
// 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 "<

}
Lê Thị Hoa Hồng hoahong 26/04/2013 22:04
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.
Trả lời câu hỏi
Tải lại mã
Câu hỏi lĩnh vực Lập trình
Lê Văn Tùng Tìm lớp dạy học lập trình website PHP & MySQL ở Hải Phòng ?

Đăng lúc: 22:04 - 26/04/2013 trong Lập trình

dang duc thang Có ai biết viết chương trình hack hoặc tìm lỗi game online ko ?

Đăng lúc: 22:04 - 26/04/2013 trong Lập trình

vietnamconnection Ghép ứng dụng java giùm ?

Đăng lúc: 22:04 - 26/04/2013 trong Lập trình

Link Giúp mình lập trình bằng C#?

Đăng lúc: 22:04 - 26/04/2013 trong Lập trình

Hin Ai biết cách tính điểm truy cập trang web như vạtgia này không?

Đăng lúc: 22:04 - 26/04/2013 trong Lập trình

Thu Trang Giới thiệu giùm mình vài website để tự học ngôn ngữ lập trình Visual Basic??

Đăng lúc: 22:04 - 26/04/2013 trong Lập trình

Lê Thị Hoa Hồng Cho em hỏi chúc về lập trình auto game ?

Đăng lúc: 22:04 - 26/04/2013 trong Lập trình

Phương Làm cho em về bài tập C#?

Đăng lúc: 22:04 - 26/04/2013 trong Lập trình

Hin Cách tạo đĩa ghost đa cấu hình?

Đăng lúc: 22:04 - 26/04/2013 trong Lập trình

Hương Có bác nào biết địa chỉ ghos và sửa máy tính laptop tin cậy không ạ! Khu Vực Hải Dương

Đăng lúc: 22:04 - 26/04/2013 trong Lập trình

Thu Trang Cho hỏi học lập trình mạng ứng dung thực tế là j? cám ơn nhiều

Đăng lúc: 22:03 - 26/04/2013 trong Lập trình

Đức Vân Cho em hỏi chút về lập trình Auto Volam2?

Đăng lúc: 22:03 - 26/04/2013 trong Lập trình

Hin Cho em hỏi có các nào doc file.hook hoặc file.exe không bị mã hóa ký tự ?

Đăng lúc: 22:03 - 26/04/2013 trong Lập trình

Chip chip Cách thiết lập mạng điện tử tự động bằng tin nhắn ?

Đăng lúc: 22:03 - 26/04/2013 trong Lập trình

Hoài Nam (Nam Tước) Làm cho em bài toán này?

Đăng lúc: 22:03 - 26/04/2013 trong Lập trình

nophoto Làm cho mình bài toán này?

Đăng lúc: 22:03 - 26/04/2013 trong Lập trình

lighting Giá ổ cứng sata 80 gb bao nhiêu ?

Đăng lúc: 22:03 - 26/04/2013 trong Lập trình

nophoto Có ai biết về C# không a,chỉ giùm em bài này với,em cảm ơn

Đăng lúc: 22:03 - 26/04/2013 trong Lập trình

Đức Cảnh Hỏi về lập trình?

Đăng lúc: 22:03 - 26/04/2013 trong Lập trình

Phương Giao diện Winfrom

Đăng lúc: 22:03 - 26/04/2013 trong Lập trình

Rao vặt Siêu Vip