Follow us on...
Follow us on Twitter Follow us on Facebook Watch us on YouTube

Tuyển chuyên viên tin tức VN-Zoom 2014

Tìm HD - Phần mềm tìm và xem phim HD miễn phí

Hoãn tổ chức offline VN-Zoom 8 năm tại TP HCM

Chiêm ngưỡng BaoMoi đẹp "tuyệt diệu" trên Windows Phone

Tài trợ VNZ Siêu phẩm Tân Kiếm Thế chibi 3D mới

Tuyển BQT VN-Zoom
Trang 1/2 1 2 cuốicuối
kết quả từ 1 tới 15 trên 21
  1. #1
    lucky-start's Avatar
    lucky-start vẫn chưa có mặt trong diễn đàn Rìu Sắt Đôi
    Tham gia
    Mar 2011
    Bài
    240
    Cảm ơn
    282
    Điểm
    215/112 bài viết
    VR power
    0

    Post Tìm các từ có độ dài lớn nhất trong chuỗi

    Viết chương trình xuất ra từ dài nhất trong một chuỗi bất kì.Mọi người ai biết viết giúp mình nha.Thank nhiều

  2. Có 1 thành viên cảm ơn lucky-start cho bài viết này:
    Hoaian_95 (13-03-2012)

  3. #2
    19-6's Avatar
    19-6 vẫn chưa có mặt trong diễn đàn Moderator
    Tham gia
    Sep 2008
    Đến từ
    Abyss
    Bài
    1.904
    Cảm ơn
    858
    Điểm
    3.407/1.516 bài viết
    VR power
    0

    Default

    viết bằng C hay Pascal ?


  4. Có 1 thành viên cảm ơn 19-6 cho bài viết này:
    Hoaian_95 (13-03-2012)

  5. #3
    Tung_Huynh's Avatar
    Tung_Huynh vẫn chưa có mặt trong diễn đàn Cống hiến cho [V-Z]
    Tham gia
    Jul 2009
    Đến từ
    Thái Nguyên
    Bài
    6.777
    Cảm ơn
    1.540
    Điểm
    4.122/2.748 bài viết
    VR power
    0

    Default

    C nhá
    Tách từng từ trong câu đó vào 1 mảng của chuỗi
    Công việc tiếp theo quá đơn giản đó là duyệt hết cái mảng đó và tim ra strlen(tach[i]) nào lớn nhất thì xuất ra cái xâu tach[i] đó. Cái này bác tự làm nhá, phần khó nhất thì e code rồi

    Code:
    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    
    int p;
    
    void tachtu(char st[100], char s1[100][100])  //luu vao s1.
    {
    	  int i,j,k;
    	  //them dau " " vao dau cau:
    	  strrev(st); strcat(st," "); strrev(st);
    	  //puts(st);
    	  p=-1;
    	  for (i=0; i<strlen(st); i++)
    	   if (st[i]==' ' && st[i+1]!=' ')
    	   { j=i+1; k=0; p++;
    		 while(j<=strlen(st))
    		 { if (st[j]!=' ') { s1[p][k]=st[j]; j++; k++;}
    		   else { i+=k; s1[p][k]='\0'; break; }
    		 } //"i+=k: sang tu` tiep theo (giam bot vong lap ~ do phuc tap)
    	   }
    }
    
    main()
    {
    	  char cau[100],tach[100][100];
    	  printf("Nhap cau: "); gets(cau);
    	  tachtu(cau,tach);
    	  getch();
    }
    Thay đổi nội dung bởi Tung_Huynh; 30-04-2011 lúc 02:04.

  6. Có 2 thành viên cảm ơn Tung_Huynh cho bài viết này:
    Hoaian_95 (13-03-2012), hoangdongpc (03-05-2011)

  7. #4
    19-6's Avatar
    19-6 vẫn chưa có mặt trong diễn đàn Moderator
    Tham gia
    Sep 2008
    Đến từ
    Abyss
    Bài
    1.904
    Cảm ơn
    858
    Điểm
    3.407/1.516 bài viết
    VR power
    0

    Default

    Ý tưởng của mình cũng giống Tung_Huynh, nhưng phần tách từ gọn hơn (^_^)
    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    
    main()
    {
     char s[80], st[30][80];
     int i=0,j,n,d=0,max=0;
     printf("nhap 1 chuoi: ");
     gets(s);
     n=strlen(s);
     for(j=0;j<n;j++)
     {
      if(s[j]!=' ')
      {
       st[i][d]=s[j];
       d++;
      }
      if((s[j]==' '&&s[j+1]!=' ')||j==n-1)
      {
       st[i][d]='\0';
       if(max<d)
        max=d;
       i++;
       d=0;
      }
     }
     printf("Cac tu co do dai lon nhat trong chuoi:\n");
     for(j=0;j<i;j++)
      if(strlen(st[j])==max)
       printf("%s \n",st[j]);
     getch();
    }
    Thay đổi nội dung bởi 19-6; 28-10-2011 lúc 23:05.


  8. Có 2 thành viên cảm ơn 19-6 cho bài viết này:
    Hoaian_95 (13-03-2012), tuan_990 (28-11-2011)

  9. #5
    pnst_1811's Avatar
    pnst_1811 vẫn chưa có mặt trong diễn đàn Búa Gỗ
    Tham gia
    Sep 2010
    Bài
    10
    Cảm ơn
    0
    Điểm: 1/1 bài viết
    VR power
    0

    Default

    Bạn có thể xem lại code được không?....Mình test rui mà ko ra kết quả được....Cám ơn bạn
    Chỉ xuất ra câu từ dài nhất trong chuỗi là: ... thôi chứ ko ra được kết quả.

  10. Có 1 thành viên cảm ơn pnst_1811 cho bài viết này:
    Hoaian_95 (13-03-2012)

  11. #6
    19-6's Avatar
    19-6 vẫn chưa có mặt trong diễn đàn Moderator
    Tham gia
    Sep 2008
    Đến từ
    Abyss
    Bài
    1.904
    Cảm ơn
    858
    Điểm
    3.407/1.516 bài viết
    VR power
    0

    Default

    Trích pnst_1811 View Post
    Bạn có thể xem lại code được không?....Mình test rui mà ko ra kết quả được....Cám ơn bạn
    Chỉ xuất ra câu từ dài nhất trong chuỗi là: ... thôi chứ ko ra được kết quả.
    mình test chạy bình thường mà (·_·? )



  12. Có 2 thành viên cảm ơn 19-6 cho bài viết này:
    Hoaian_95 (13-03-2012), hoangdongpc (03-05-2011)

  13. #7
    Tham gia
    Feb 2009
    Bài
    5
    Cảm ơn
    0
    Điểm
    2/2 bài viết
    VR power
    0

    Default tìm từ dài nhất.

    Trích 19-6 View Post
    mình test chạy bình thường mà (·_·? )

    mình đã text rồi, lỗi bạn ơi. chạy trên visual studio là coi như toi. sao này nếu bạn có post thì nên chạy trên thằng này. bây jo cái này thịnh hơn bạn ah. dù sao cũng cảm ơn bạn nhiều. ah wen bạn nên có giải thuật hay là chú thích cho mọi người hiểu rõ ý của bạn dc ko. thanhk

  14. Có 1 thành viên cảm ơn ngoi_sao_nho74 cho bài viết này:
    Hoaian_95 (13-03-2012)

  15. #8
    19-6's Avatar
    19-6 vẫn chưa có mặt trong diễn đàn Moderator
    Tham gia
    Sep 2008
    Đến từ
    Abyss
    Bài
    1.904
    Cảm ơn
    858
    Điểm
    3.407/1.516 bài viết
    VR power
    0

    Default

    Trích ngoi_sao_nho74 View Post
    mình đã text rồi, lỗi bạn ơi. chạy trên visual studio là coi như toi. sao này nếu bạn có post thì nên chạy trên thằng này. bây jo cái này thịnh hơn bạn ah. dù sao cũng cảm ơn bạn nhiều. ah wen bạn nên có giải thuật hay là chú thích cho mọi người hiểu rõ ý của bạn dc ko. thanhk
    thuật toán của mình cũng giống như bạn Tung_Huynh đã nói ở phía trên thôi, đó là đưa từng từ trong xâu vào 1 mảng chuỗi, sau đó thì tìm từ có độ dài lớn nhất trong mảng chuỗi đó, cũng tương tự như việc tìm giá trị max trong mảng số nguyên vậy đó (ˆ-ˆ)
    p/s: đâu phải ai cũng dùng visual studio đâu bạn, có người dùng Borland C, người thì dùng Dev-C++, rồi còn C-Free, Code Block, nói chung là nếu muốn chạy 1 đoạn code trên 1 trình biên dịch nào đó thì chỉ cần chỉ cần chỉnh sửa lại 1 tí là được, như ở Visual C++ thì thêm dòng using namespace std; vào đầu chương trình và chỉnh sửa thêm râu ria gì đó cho phù hợp, cái này cũng đơn giản thôi mà


  16. Có 1 thành viên cảm ơn 19-6 cho bài viết này:
    Hoaian_95 (13-03-2012)

  17. #9
    kien_coi_1997's Avatar
    kien_coi_1997 vẫn chưa có mặt trong diễn đàn Rìu Vàng Đôi
    Tham gia
    Apr 2009
    Đến từ
    Hà nội
    Bài
    1.117
    Cảm ơn
    693
    Điểm
    1.251/559 bài viết
    VR power
    0

    Default

    Theo mình không nên tách từng từ ra mảng.
    Mình thấy nên dùng cách như trong việc tìm max ấy.
    Đi đến đâu, làm đến đấy:

    var S,max,W:String; {W là từ đang xử lí}

    ..readln(S);..

    P:=S; i:=1;

    while i<=length(S) do
    Begin

    W:='';
    while A[i] in ['a'..'z','A'..'Z','0'..'9'] do
    Begin W:=W+S[i]; i:=i+1; End;
    if length(W)>length(Max) then Max:=W;

    End;

    chưa test
    Blog về Pascal_chương trình pascal_ game pascal...
    Pascal-Chương trình hay, Unit hay, Game Pascal, các phần hỗ trợ trong Pascal.
    My blog: http://vn.360plus.yahoo.com/kien_coi_1997

  18. Có 4 thành viên cảm ơn kien_coi_1997 cho bài viết này:
    19-6 (08-05-2011), hathetrinh (28-11-2011), Hoaian_95 (13-03-2012), tuan_990 (28-11-2011)

  19. #10
    19-6's Avatar
    19-6 vẫn chưa có mặt trong diễn đàn Moderator
    Tham gia
    Sep 2008
    Đến từ
    Abyss
    Bài
    1.904
    Cảm ơn
    858
    Điểm
    3.407/1.516 bài viết
    VR power
    0

    Default

    Trích kien_coi_1997 View Post
    Theo mình không nên tách từng từ ra mảng.
    Mình thấy nên dùng cách như trong việc tìm max ấy.
    Đi đến đâu, làm đến đấy:

    var S,max,W:String; {W là từ đang xử lí}

    ..readln(S);..

    P:=S; i:=1;

    while i<=length(S) do
    Begin

    W:='';
    while A[i] in ['a'..'z','A'..'Z','0'..'9'] do
    Begin W:=W+S[i]; i:=i+1; End;
    if length(W)>length(Max) then Max:=W;

    End;

    chưa test
    cách này cũng hay nhưng cần phải xác định giá trị max ban đầu, với lại theo đề bài thì chủ topic muốn in ra các từ có độ dài lớn nhất ( tức là có nhiều từ có độ dài bằng nhau nhưng lại lớn nhất trong chuỗi ) nên nếu code như bạn thì chỉ có thể in ra 1 từ mà thôi


  20. Có 1 thành viên cảm ơn 19-6 cho bài viết này:
    Hoaian_95 (13-03-2012)

  21. #11
    Tung_Huynh's Avatar
    Tung_Huynh vẫn chưa có mặt trong diễn đàn Cống hiến cho [V-Z]
    Tham gia
    Jul 2009
    Đến từ
    Thái Nguyên
    Bài
    6.777
    Cảm ơn
    1.540
    Điểm
    4.122/2.748 bài viết
    VR power
    0

    Default

    tách từng từ ra mảng nó còn nhiều tác dụng và áp dụng được cho nhiều bài lắm
    đếm từ
    viết ngược chuỗi
    mỗi từ 1 dòng
    từ xhiện nhiều
    ..........

  22. Có 1 thành viên cảm ơn Tung_Huynh cho bài viết này:
    Hoaian_95 (13-03-2012)

  23. #12
    dinhka's Avatar
    dinhka vẫn chưa có mặt trong diễn đàn Rìu Sắt Đôi
    Tham gia
    Dec 2008
    Bài
    244
    Cảm ơn
    34
    Điểm
    60/42 bài viết
    VR power
    0

    Default

    Nếu các từ đều có độ dài khác nhau thì thế này đúng không :
    #include<stdio.h>
    #include <conio.h>
    #include<string.h>
    void main()
    {
    int i,j,s=0,st,le,sm,im,jm;
    char a[50]={'n','g','o','n',' ','n','g','u',' ','l','a','p',' ','t','r','i','n','h',' ','c'};
    //em chua hoc den chuoi nen k0 biet cach nhap, may bac thong cam
    le=strlen(a);
    for(i=0;i<le;i++)
    {
    sm=0;
    if(a[i]==' ');
    for(j=i+1;j<le;j++)
    if(a[j]!=' ') sm++; else break;
    if(sm>s){s=sm; im=i;jm=j-1;}
    }
    printf("\nTu dai nhat la : ");
    for(i=im;i<=jm;i++) printf("%c",a[i]);
    getch();
    }
    Nếu in ra tất cả các từ có độ dài dài nhất thì các tự thêm bớt nhé

    ---------- Bài thêm lúc 05:03 ---------- Bài trước là lúc 17:18 ----------

    Hoàn chỉnh như sau :
    #include<stdio.h>
    #include <conio.h>
    #include<string.h>
    void main()
    {
    int i,j,s=0,st,le,sm,im,jm,k;
    char a[50];
    printf("Nhap vao mot chuoi : ");
    gets(a);
    le=strlen(a);
    printf("\nCac tu dai nhat la :\n");
    for(i=0;i<le;i++)
    {
    sm=0;
    if(a[i]==' '|| i==0);
    for(j=i==0?i:i+1;j<le;j++)
    if(a[j]!=' ') sm++; else break;
    if(sm>s)s=sm;
    }
    for(i=0;i<le;i++)
    {
    sm=0;
    if(a[i]==' ');
    for(j=i==0?i:i+1;j<le;j++)
    if(a[j]!=' ') sm++; else break;
    if(sm==s){for(k=i==0?i:i+1;k<=j-1;k++) printf("%c",a[k]); printf("\n");}
    }
    getch();
    }

  24. Có 1 thành viên cảm ơn dinhka cho bài viết này:
    Hoaian_95 (13-03-2012)

  25. #13
    Tham gia
    Mar 2011
    Bài
    5
    Cảm ơn
    4
    Điểm: 1/1 bài viết
    VR power
    0

    Default

    Cam on bac nhieu

    ----------------------------
    chú ý viết tiếng Việt có dấu.
    Thay đổi nội dung bởi 19-6; 28-11-2011 lúc 20:27.

  26. Có 1 thành viên cảm ơn thienthanlove041 cho bài viết này:
    Hoaian_95 (13-03-2012)

  27. #14
    hathetrinh's Avatar
    hathetrinh vẫn chưa có mặt trong diễn đàn Rìu Vàng
    Tham gia
    Jun 2008
    Bài
    704
    Cảm ơn
    548
    Điểm
    239/160 bài viết
    VR power
    0

    Default

    tìm độ dài trực tiếp là 1 ý kiến khá hay, nếu như chúng ta chỉ quan tam là từ dài nhất trong xâu
    :d

    chém nào

  28. Có 1 thành viên cảm ơn hathetrinh cho bài viết này:
    Hoaian_95 (13-03-2012)

  29. #15
    tungh121's Avatar
    tungh121 vẫn chưa có mặt trong diễn đàn Búa Đá
    Tham gia
    Oct 2010
    Bài
    64
    Cảm ơn
    38
    Điểm
    15/11 bài viết
    VR power
    0

    Default

    Ý tưởng cũng chẳng có gì cả:tách từ vào mảng,sau đó tìm max là độ dài của các từ dài nhất,rồi lại duyệt tìm các từ có độ dài bằng max thế thôi
    Đây là code mình viết trong pascal bạn xem đã được chưa
    uses crt;
    var s,w:string;
    a:array[1..100]of string;
    max,i,d:integer;
    begin
    clrscr;
    write('nhap xau:'); readln(s);
    s:=s+' ';
    repeat
    while (not(upcase(s[i])in['A'..'Z']))and(i<length(s)) do inc(i);
    if i<length(s) then inc(d);
    while (upcase(s[i])in['A'..'Z'])and(i<length(s)) do begin w:=w+s[i]; inc(i); end;
    a[d]:=w; w:='';
    until i=length(s);
    max:=length(a[1]);
    writeln('cac tu co do dai lon nhat la:');
    for i:=2 to d do
    if length(a[i])>max then max:=length(a[i]);
    for i:=1 to d do
    if length(a[i])=max then writeln(a[i]);
    readln
    end.

  30. Có 1 thành viên cảm ơn tungh121 cho bài viết này:
    Hoaian_95 (13-03-2012)

 

 
Trang 1/2 1 2 cuốicuối

Quyền sử dụng

  • Bạn không thể gửi chủ đề mới
  • Bạn không thể gửi trả lời
  • Bạn không thể gửi file đính kèm
  • Bạn không thể tự sửa bài viết của mình
  •