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

Đề tài: code thuật toán radix sort bằng C, kết quả không đúng. Mọi người sửa giúp với?

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

    Mặc định code thuật toán radix sort bằng C, kết quả không đúng. Mọi người sửa giúp với?

    Các anh chị coi dùm em sao cái radix sort của em nó chạy ra kết quả sai. Em sữa hoài nó không ra.
    C Code:
    1. #include <memory.h>
    2. #include <iostream.h>
    3. #include <conio.h>
    4. #include <stdio.h>
    5. #include <math.h>
    6. #define MAX 100
    7. typedef int elem;
    8.  
    9. typedef struct
    10. {
    11.     elem e[MAX];
    12.     int front,rear;
    13.  
    14. }queue;
    15. //Tao queue.
    16. void create_q(queue &q)
    17. {
    18.     q.front= q.rear = 0;
    19. }
    20. //Kiem tra queue rong.
    21. int empty_q(queue q)
    22. {
    23.     if(q.front==0) return 1;
    24.     return 0;
    25. }
    26. //Kiem tra queue day.
    27. int full_q(queue q)
    28. {
    29.     if((q.front==q.rear)&&(q.rear!=0)) return 1;
    30.     return 0;
    31. }
    32. //Them phan tu vao queue.
    33. void add_q(queue &q,elem &x)
    34. {
    35.         if(!full_q(q))
    36.         {
    37.             q.rear = q.rear % MAX + 1;
    38.             q.e[q.rear] = x ;
    39.         }
    40.         else  cout<<"Loi: Hang Day";
    41. }
    42. //Xóa phan tu khoi queue
    43. void remove_q(queue &q)
    44. {
    45.     if(!empty_q(q))
    46.     {
    47.         q.front = q.front % MAX +1;
    48.         if(q.front==q.rear)
    49.         {
    50.             q.front=q.rear=0;
    51.         }
    52.     }
    53.     else cout<<"Loi: Hang rong!";
    54. }
    55. //Xac dinh gia tri cua phan tu dau.
    56. int front_q(queue &q)
    57. {
    58.     if(empty_q(q)) cout<<"Loi: Khong xac dinh!";
    59.     return q.e[q.front+1];
    60. }
    61. //Dem so phan tu.  
    62. int count(queue &q)      
    63. {
    64.     return q.rear;
    65. }
    66. //Tim so lon nhat cua mang.
    67. int max(elem e[],int n)
    68. {
    69.     int x=e[0];
    70.     for(int i=1;i<n;i++)
    71.     {
    72.         if(e[i]>x) x = e[i];
    73.     }
    74.     return x;
    75. }
    76. //Dem mot so co do dai bao nhieu?.
    77. int dem_chu_so(int x)
    78. {
    79.     int count=0;
    80.     while(x>0)
    81.     {
    82.         x=x/10;
    83.         count++;
    84.     }
    85.     return count;
    86. }
    87. void radixsort(elem e[], int n)
    88. {
    89.     queue q[9];
    90.     int chieudaiso;
    91.     for (int i = 0; i <10; i++)  // khoi tao queue rong
    92.     {
    93.         create_q(q[i]);
    94.     }
    95.     int k=max(e,n);
    96.     chieudaiso = dem_chu_so(k);
    97.     for(int i=1;i<=chieudaiso;i++)
    98.     {
    99.         for(int j=0;j<n;j++)
    100.         {
    101.             //xac dinh chi so x cua queue su dung
    102.             int x=(e[j]/((int)pow(10,i-1)))%10;
    103.             cout<<x<<endl;
    104.             add_q(q[x],e[j]);
    105.         }
    106.          int a=-1;
    107.         for(int j=0;j<10;j++)
    108.         {
    109.             if(!empty_q(q[j]))
    110.             {
    111.                 while(!empty_q(q[j]))
    112.                 {
    113.                     a=a+1;
    114.                     e[a]=front_q(q[j]);
    115.                     remove_q(q[j]);
    116.                 }
    117.             }  
    118.         }
    119.     }
    120. }
    121.  
    122. int main()
    123. {
    124.     int n,e[MAX];
    125.     cout << "nhap so ptu: ";
    126.     cin >> n;
    127.  
    128.     for (int i = 0; i <n; i++)
    129.     {
    130.         cout << "ptu thu " << i << ": ";
    131.         cin >> e[i];
    132.     }
    133.     cout << "cac phan tu cua mang ban dau:" << endl;
    134.     for (int i = 0; i<n; i++)
    135.         cout << "["<<e[i]<<"]"<< "\t";
    136.     radixsort(e, n);
    137.     cout << "mang da dc xep" << endl;
    138.     for (int i = 0; i<n; i++)
    139.         cout <<"["<<e[i]<<"]"<< "\t";
    140.  
    141.     getch();
    142.     return 0;
    143. }

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

    Không ai giúp em được à.HIX

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

  1. Giúp em bài toán Mô phỏng thuật toán MERGE sort va RADIX Sort bằng C
    Gửi bởi mr.fan 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: 03-06-2010, 09:34 AM
  2. code Thuật toán Quick Sort. Giúp em sửa lỗi?
    Gửi bởi chuong01 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: 20-10-2009, 09:25 PM
  3. Sắp xếp Radix sort. Nhờ mọi người sửa giúp
    Gửi bởi alexander88 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 17-10-2009, 06:39 AM
  4. Thuật toán radix sort
    Gửi bởi huynguyen trong diễn đàn Thủ thuật, Tutorials CTDL & Giải thuật
    Trả lời: 3
    Bài viết cuối: 28-08-2009, 10:19 PM
  5. Thuật radix sort
    Gửi bởi kinhmoiban 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: 11-09-2008, 10:55 AM

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