Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: Tìm chuỗi có độ dài lớn nhất trong mảng bị lỗi !

  1. #1
    Ngày gia nhập
    08 2011
    Bài viết
    4

    Post Tìm chuỗi có độ dài lớn nhất trong mảng bị lỗi !

    Các bác xem code của e xem lỗi chỗ nào mà khi e chạy thì chỉ đúng khi có 2 chuỗi lớn nhất , còn nếu 3 chuỗi giống nhau thì chương trình lại chỉ hiển thị có 2, mà nhiều khi dữ liệu lần chạy trước còn bị hiển thị . Code của e đây ạ:
    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <string.h>
    4.  
    5.  
    6.  
    7. void input(char a[][50], int *n)
    8. {
    9.     int i;
    10.     do
    11.     {
    12.         printf("\nN :");
    13.         scanf("%d", n);
    14.         if(*n<=0 || *n>100)
    15.             printf("Not support. Re-enter N.");
    16.     }
    17.     while(*n<=0 || *n>100);
    18.     for(i=0; i<*n; i++)
    19.     {
    20.         fflush(stdin);
    21.         printf("a[%d] = ", i+1);
    22.         gets(a[i]);
    23.     }
    24. }
    25. void cal_average(char a[][50], int n)
    26. {
    27.     int i, count=0;
    28.     for(i=0; i<n; i++)
    29.     {
    30.         count=count+strlen(a[i]);
    31.     }
    32.     printf("\nAverage Length :%d", count/n);
    33. }
    34.  
    35. //Chỉ lỗi duy nhất ở phần này ạ
    36. void length_greater(int a[][50], int n)
    37. {
    38.     int dn[1000];
    39.     int sdn =0, lmax = 0, l;
    40.     int i;
    41.     lmax=strlen(a[1]);
    42.     for(i=0; i<n; i++)
    43.     {
    44.         l=strlen(a[i]);
    45.         if(l>lmax)
    46.         {
    47.             lmax=l;
    48.         }
    49.     }
    50.     for(i=0; i<n; i++)
    51.     {
    52.         l=strlen(a[i]);
    53.         if(l==lmax)
    54.         {
    55.             dn[sdn++]=i;
    56.         }
    57.     }
    58.     printf("\nGreater string");
    59.     printf("%s",(sdn>1) ? "(s)" : " ");
    60.     printf(" : ");
    61.     for(i=1; i<=sdn; i++)
    62.         printf("%s %s", (i>1) ? "," : " ", a[dn[i]]);
    63.     printf("\nAmount : %d", sdn);
    64.  
    65. }
    66. void main()
    67. {
    68.     int n;
    69.     char a[100][50];
    70.     clrscr();
    71.     input(a,&n);
    72.     cal_average(a,n);
    73.     length_greater(a,n);
    74.    fflush(stdin);
    75.     getch();
    76. }

    E xin chân thành cám ơn !

  2. #2
    Ngày gia nhập
    12 2010
    Nơi ở
    Cần thơ
    Bài viết
    273

    Thử sữa lại như thế này xem
    C Code:
    1. void length_greater(int a[][50], int n)
    2. {
    3.     int dn[1000];
    4.     int sdn =0, lmax, l;
    5.     int i;
    6.     lmax=strlen(a[0]);
    7.     for(i=1; i<n; i++)
    8.         if(strlen(a[i])>lmax)   lmax=strlen(a[i]);
    9.     for(i=0; i<n; i++)
    10.         if(strlen(a[i])==lmax)  dn[sdn++]=i;
    11.  
    12.     printf("\nGreater string");
    13.     printf("%s",(sdn>1) ? "(s)" : " ");
    14.     printf(" : ");
    15.  
    16.     for(i=0; i<sdn; i++)
    17.         printf("%s %s", (i>1) ? "," : " ", a[dn[i]]);
    18.     printf("\nAmount : %d", sdn);
    19. }
    Ai bất tài, tôi nhìn hoài chẳng thấy,
    Đi khắp phòng tôi lấy 1 tấm gương,
    Khẽ đặt lên một góc phía bức tường,
    Nhìn vào đó, tôi tận tường kẻ đó.

  3. #3
    Ngày gia nhập
    11 2010
    Nơi ở
    hell
    Bài viết
    165

    bạn truyền vào mảng 2 chiều mà lại dùng strlen biểu sao nó ko lỗi kìa
    void length_greater(int a[][50], int n)

Các đề tài tương tự

  1. Bị lỗi dính chuỗi khi nhập xuất chuỗi từ file trong C++?
    Gửi bởi nguyenchikhang trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 3
    Bài viết cuối: 03-11-2011, 03:13 PM
  2. Trả lời: 1
    Bài viết cuối: 29-06-2011, 12:02 AM
  3. Turbo C Lỗi Nhập một chuỗi và 1 từ cho biết từ đó xuất hiện trong chuỗi bao nhiêu lần?
    Gửi bởi vietvinhqn1992 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 17-01-2011, 12:38 PM
  4. Kỹ thuật C++ Các quy tắc nhập chuỗi trong C++, làm thế nào để nhập chuỗi có khoảng trắng?
    Gửi bởi quyen1991 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 20-11-2010, 03:36 PM
  5. Bài tập C tối ưu hóa chuỗi nhập từ bàn phím(xóa ký tự trắng thừa trong chuỗi)
    Gửi bởi kitti trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 13
    Bài viết cuối: 27-10-2010, 07:11 PM

Quyền hạn của bạn

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