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

Đề tài: cho e hỏi về so sánh các phần tử trong mảng

  1. #1
    Ngày gia nhập
    10 2008
    Bài viết
    1

    Mặc định cho e hỏi về so sánh các phần tử trong mảng

    e đang học c
    thầy e cho 1 bài là cho 1 mảng có 20 phần tử nhg kô đc có hơn 10 phần tử khác nhau
    ví dụ {1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10} là đc
    còn {1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,11} là kô đc
    có ai chỉ giúp e làm sao để liệt kê ra đc có bao nhiêu phần tử khác nhau trong 1 mảng kô
    ví dụ {1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10} là có 10 phần tử
    cám ơn mọi ng trc nha
    e nghĩ mấy hum rồi mà chưa ra đc:((

  2. #2
    Ngày gia nhập
    11 2007
    Nơi ở
    Biết để làm gì?
    Bài viết
    827

    Mình nêu ý tưởng cho bạn nhé : đầu tiên bạn sắp xếp mảng theo thứ tự tăng dần(dùng các thuật toán sắp xếp).
    Sau đó liệt kê xem có bao nhiêu giá trị :
    PHP Code:
    int count=0;
    for (
    i=0;i<20;i++)
        {
            if(
    a[i]==a[i+1])
                
    count++;
        } 
    count là số giá trị của mảng.
    Cánh Chym ứ mỏi

  3. #3
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    thử lưu ra mảng khác xóa hết trùng nhau đi rồi đếm

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

    Trích dẫn Nguyên bản được gửi bởi dieucay555 Xem bài viết
    Mình nêu ý tưởng cho bạn nhé : đầu tiên bạn sắp xếp mảng theo thứ tự tăng dần(dùng các thuật toán sắp xếp).
    Sau đó liệt kê xem có bao nhiêu giá trị :
    PHP Code:
    int count=0;
    for (
    i=0;i<20;i++)
        {
            if(
    a[i]==a[i+1])
                
    count++;
        } 
    count là số giá trị của mảng.
    phai la a[i]!=a[i+1] chu ban
    thank nha mih da chay dc
    Đã được chỉnh sửa lần cuối bởi datraki : 18-10-2008 lúc 10:14 AM.

  5. #5
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    @datraki: Chú ý post bài bằng tiếng Việt có dấu.

    Có một cách khác như này, có thể không hay nhưng cũng gọi là một cách (kiểu sử dụng nổi bọt).

    C Code:
    1. for(int i=0; i<19; i++)
    2. {
    3.      int flag=1;
    4.      for (j=i+1; j<20; j++)
    5.           if(a[i]==a[j]) flag=0;
    6.       if (flag) count++;

  6. #6
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Mặc định cho e hỏi về so sánh các phần tử trong mảng

    C++ idea
    C++ Code:
    1. #include <cstdlib>
    2. #include <cstdio>
    3.  
    4. int* remove_pos( int ary[], int size ) {
    5.     int  cnt = 0;
    6.     int* ptr = ary;
    7.     for( int o = 0; o < size-1; ++o, ++ptr ) {
    8.         if( *( ary+o ) != *( ary+o+1 ) )
    9.             cnt++;
    10.         if( cnt == 10 )
    11.             return ++ptr;
    12.     }
    13.     return 0;
    14. }
    15.  
    16. int* remove_range( int* beg, int* end, int** rm_pos ) {
    17.     if( ( end - beg ) < ( *rm_pos - beg ) ){
    18.         printf( "Did you pass the right range ?\n" );
    19.         exit( 1 );
    20.     }
    21.  
    22.     int* ptr = ( int* )malloc( ( *rm_pos - beg ) * sizeof( int ) );
    23.     int* o   = ptr;
    24.     for( ;beg != *rm_pos; ++o, ++beg ) {
    25.         *o = *beg;
    26.     }
    27.     *rm_pos = o;
    28.     return ptr;
    29. }
    30.  
    31. void print( int* beg, int* end ) {
    32.     for( ;beg != end; ++beg ) {
    33.         printf( "%d ->", *beg );
    34.     }
    35.     printf( "\n" );
    36. }
    37.  
    38. int main()
    39. {
    40.     const int SIZE = 20;
    41.     int   ary[ SIZE ] = { 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 11 };
    42.     int*  new_ary;
    43.     int*  pos = remove_pos( ary, SIZE );
    44.  
    45.     new_ary = remove_range( ary, ary + 19, &pos );
    46.  
    47.     print( new_ary, pos );
    48.  
    49.     free( new_ary );
    50.  
    51.     return 0;
    52. }

  7. #7
    Ngày gia nhập
    11 2007
    Nơi ở
    Biết để làm gì?
    Bài viết
    827

    code của RR vô đối,nhưng mà pointer to poiner... :(
    Cánh Chym ứ mỏi

  8. #8
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Dùng pointer luôn nhanh và hiệu quả ! Chẳng cần quan tâm đối tượng bự bao nhiêu, lấy địa chỉ nó rùi là xử tuốt ! Điển hình core của STL toàn functor !

  9. #9
    Ngày gia nhập
    03 2008
    Bài viết
    1

    tiện đây tặng luôn bạn cái chương trình sắp xếp nhanh Quicksort
    Code:
    void qsort(int l,int r)
    {
         int i,j,x,h;
         i=l;
         j=r;
         x=a[(int) ((l+r)/2)];
         do
         {
                      while (a[i]<x) i++;
                      while (a[j]>x) j--;
                      if (i<=j)
                      {
                               h=a[i];
                               a[i]=a[j];
                               a[j]=h;
                               i++;
                               j--;
                      }
         } while (i<=j);
         if (i<r) qsort(i,r);
         if (j>l) qsort(l,j);
    }
    lúc chạy gọi qsort(1,n)
    have fun!
    Đã được chỉnh sửa lần cuối bởi bobby_tran : 18-10-2008 lúc 05:02 PM.

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

  1. Lập trình C tìm xem trong mảng số nguyên i_Mang[] có bao nhiêu phần tử có giá trị âm & phần tử có giá trị âm trong mảngn
    Gửi bởi fawker trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 29-05-2013, 03:28 PM
  2. Bài tập C xóa phần tử trùng nhau trong mảng 1 chiều để lại 1 phần tử
    Gửi bởi ronoa trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 06-01-2012, 10:46 PM
  3. Thủ tục loại bỏ các phần tử trùng nhau, giữ lại duy nhất 1 phần tử trong DSLK
    Gửi bởi mrtyoffline trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 02-03-2011, 10:27 PM
  4. Thuật toán trên C | Xóa phần tử trong dãy phần tử tăng dần?
    Gửi bởi quangphuit trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 09-03-2010, 01:57 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