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

Đề tài: Thống kê tần suất xuất hiện của các phần tử trong mảng 1 chiều?

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

    Question Thống kê tần suất xuất hiện của các phần tử trong mảng 1 chiều?

    làm sao có thể thống kê số lần xuất hiện của các phần tử xuất hiện trong mảng một chiều.
    ví dụ: -1 2 -1 3 2
    -1:2 lần
    2:2 lần
    3:1 lần
    thêm nữa!ko đựoc xài thêm một mảng dem[a[i]] để đếm nha.tại vì lúc đó sẽ ko đếm được số âm,vì gặp chỉ số âm.
    Có cách nào khác hay ko pà con?

  2. #2
    Ngày gia nhập
    11 2007
    Bài viết
    47

    C1:
    Bạn có thể dùng danh sách liên kết, với 3 trường
    -Value: Giá trị của phần tử
    -Cout: số lần xuất hiện của phần tử đó
    -Next: Trỏ tới phần tử tiếp theo

    Mỗi lần đọc một số, bạn kiểm tra nó tồn tại hay chưa
    -Nếu có thì tăng cout
    -Nếu không thì thêm mới

    Để hạn chế số phép toán trong khi kiểm tra sự tồn tại, bạn nên đưa vào danh sách theo thứ tự tăng hay giảm dần.

    C2:
    Bạn sắp xếp mảng này theo thứ tự tăng hay giảm dần, sau đó đếm. Ok

  3. #3
    Ngày gia nhập
    10 2007
    Bài viết
    24

    Cám ơn nhiều nhưng tui chưa học đến cấu trúc dữ liệu>>danh sách liên kết.nhưng tui sẽ save cái này để xem lại sau..Còn cách nào ko?

  4. #4
    Ngày gia nhập
    06 2007
    Nơi ở
    HCM
    Bài viết
    365

    Vậy bạn đã học đến thuật toán sàng eratothens chưa, dùng 1 mảng bool để đánh dấu các loại phần tử đã đếm là OK , dưới đây là mã giả
    Giả dụ ta cần liệt kê mảng A[N]
    Code:
    1 - Khởi tạo mảng sàng B[N] { BOOL type} = FALSE
    2 - For I  = 1 TO N
          {  
              If Not B[I]  // Đã tính thì thôi
             {
              Sum =0
              FOR J =I to N
                  {
                      If A[J] =A[I] then  {Sum++ ; B[J]= TRUE} // Đánh dấu đã tính
                   }  
              // In tổng số A[i]
                 Print "  phần tử "  + A[I] + " xuat hien " + sum + " lần"
              }
          }
    Đã được chỉnh sửa lần cuối bởi Haipt : 20-12-2007 lúc 05:45 PM.

  5. #5
    Ngày gia nhập
    07 2007
    Nơi ở
    Hồ Chí Minh
    Bài viết
    66

    bạn tao ra 1 mảng với 2 col, col 1 là value, col 2 là count
    trước tiên bạn sort nó.
    sau đó bạn đếm;
    C Code:
    1. mang[0][1] = 1;
    2. for(int n = 1;n<soluong;n++)
    3. {
    4.     if(mang[n][0] == mang[n-1][0])
    5.     {
    6.         mang[n][1]=mang[n-1][1]+1;
    7.     }
    8.     else
    9.     {
    10.         mang[n][1]=1;
    11.     }
    12. }

  6. #6
    Ngày gia nhập
    08 2010
    Bài viết
    82

    Mặc định Thống kê tần suất xuất hiện của các phần tử trong mảng 1 chiều?

    Tôi nghĩ là dùng thêm mảng phụ là ko hợp lí rồi.
    C Code:
    1. //sau khi sắp xếp mảng bạn cho cái này vào là ok
    2. i=0;
    3. j=0;
    4.     while(i<n){
    5.        dem=1;
    6.        j=i;
    7.        while(j<n){
    8.            if(a[j]==a[j+1]){
    9.               j++;                    
    10.               dem++;
    11.            }
    12.            else break;
    13.        }
    14.       printf("\n-So %d xuat hien : %d lan. ",a[i],dem);
    15.        i=i+dem;
    16.     }
    Đã được chỉnh sửa lần cuối bởi soldtheworld : 19-07-2012 lúc 08:38 AM.

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

    Sử dụng map trong STL là chuẩn nhất )
    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ẻ đó.

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

  1. Bài tập C++ Đếm tần số xuất hiện của các phần tử trong mảng 1 chiều
    Gửi bởi pnst_1811 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 01-05-2013, 01:38 PM
  2. Xuất phần tử trong mảng 1 chiều và tính tổng bằng C#
    Gửi bởi pnst_1811 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 4
    Bài viết cuối: 20-09-2011, 12:11 AM
  3. đếm tần suất xuất hiện của 1 phần tử
    Gửi bởi kamuix911 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: 27-04-2011, 11:31 PM
  4. Bài tập C Tính tần suất xuất hiện của các phần tử trong mảng
    Gửi bởi thu910 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 21-03-2011, 01:43 AM
  5. Tần suất xuất hiện của giá trị trong mảng 2 chiều
    Gửi bởi qpkdct1101 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 10-12-2010, 10:59 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