Ứng dụng   Thông báo   Hỗ trợ   Đăng ký   Đăng nhập
3 thành viên trả lời
batdongsan tritue9056 liv3rp00lvn Trả lời cuối cùng: 18/08/2008
Thành viên tích cực nhất
  • Hot
  • Giảm giá
  • Mới

      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ừ , 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
      3597
      Trả lời (3)

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

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

      Báo vi phạm