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

Đề tài: Bài tập C, sắp xếp vun đống. Giúp mình sửa lỗi?

  1. #1
    Ngày gia nhập
    05 2009
    Bài viết
    5

    Mặc định Bài tập C, sắp xếp vun đống. Giúp mình sửa lỗi?

    Có bạn nào đang học CTDL&GT giúp mình gỡ lỗi chương trình sắp xếp vun đống của mình với. Nó bị lỗi ở thủ tục swap:

    C Code:
    1. #include "conio.h"
    2. #include "stdio.h"
    3. void nhapmang(int *a,int n)
    4. {int i;
    5.  for(i=0;i<n;i++)
    6.   {printf("\n Nhap phan tu thu %d",i+1);
    7.    scanf("%d",&a[i]);
    8.   }
    9. }
    10. void in(int *a,int n)
    11. {int i;
    12.  for(i=0;i<n;i++)
    13.   printf("\t\t %d",a[i]);
    14. }
    15.  
    16. void swap(int *b,int *c)
    17. {int tg;
    18.  tg=b;
    19.  b=c;
    20.  c=tg;}
    21. void PushDown(int *a, int first,int last)
    22. {
    23.  int r;
    24.  r= first;
    25.  while (r <= (last/2))
    26.     if (last == 2*r)  // nút r chi có con trái
    27.         {
    28.          if (a[r] > a[last])
    29.             swap(&a[r],&a[last]);
    30.          r=last;
    31.         }
    32.       else
    33.    //Nút r lon hon con trai va con trai không lon hon con phai
    34.           if (a[r]>a[2*r] && a[2*r]<= a[2*r+1])
    35.             {
    36.              swap(&a[r],&a[2*r]);
    37.              r = 2*r ;// Xet tiep nut con trai
    38.             }
    39.           else
    40.    //Nut r lon hon con phai va con phai khong lon hon con trai
    41.               if (a[r]>a[2*r+1]  && a[2*r+1] <= a[2*r])
    42.                 {
    43.                  swap(&a[r],&a[2*r+1]);
    44.                  r = 2*r+1 ; //Xet tiep nut con phai
    45.                 }
    46.               else
    47.                   r = last; //Nut r da dung vi tri
    48. }
    49.  
    50. void  HeapSort(int *a, int n)
    51. {
    52.  int i;
    53.  
    54.  for (i=n/2;i>=0;i--)
    55.     PushDown(a,i,n);
    56.  for(i=n/2;i>=0;i--)
    57.     {
    58.      swap(&a[1],&a[i]);
    59.      PushDown(a,1,i-1);
    60.     }
    61. }
    62. void main()
    63. {int i,n,first,last;
    64.  printf("\n Nhap so phan tu cua mang: ");
    65.  scanf("%d",&n);
    66.  printf("\n Nhap vao 1 mang: \n");
    67.  nhapmang(a,n);
    68.  printf("\n Nhap phan tu dau tien cua mang: ");
    69.  scanf("%d",&first);
    70.  printf("\n Nhap phan tu cuoi cua mang: ");
    71.  scanf("%d",&last);
    72.  PushDown(a,first,last);
    73.  HeapSort(a,n);
    74.  in(a,n);
    75.  getch();
    76.  }

    Cam ơn các bạn trước nhé.

  2. #2
    Ngày gia nhập
    04 2009
    Bài viết
    6

    Hàm swap cần chỉnh lại như thế này:

    void swap(int *b,int *c)
    {
    int tg;
    tg=*b;
    *b=*c;
    *c=tg;
    }

    Hàm main cần khai báo thêm:
    int a[100]; --> nếu dùng cấp phát tĩnh
    int *a --> nếu dùng cấp phát động

  3. #3
    Ngày gia nhập
    11 2011
    Bài viết
    11

    đổi hàm Swap ntn nhé: Swap(int &a,int &b){...ở trong vẫn như cũ...}
    xoẹt xoẹt..chấm chấm..gạch gạch..

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

    Người ta đang cố học C - con trỏ thì bày cho người ta cách truyền tham biến = con trỏ cho quen
    Lại đi bày tham chiếu của C++ làm chi cho người ta "ỷ lại"
    Um Mani Padme Hum...!!

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

  1. Sự cố Nhờ mod chuyển giúp bài "Sắp xếp số thứ tự ngay trong bảng của 1 database?" từ MySQL sang MSSQL giúp!
    Gửi bởi hu-xeko trong diễn đàn Ý kiến, đề xuất và khiếu nại
    Trả lời: 1
    Bài viết cuối: 12-03-2012, 07:48 PM
  2. Mới nhập môn khó quá , cần trợ giúp [Vấn đề của bạn cần muốn giúp là gì ?]
    Gửi bởi cuingo212 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 5
    Bài viết cuối: 22-10-2011, 08:43 AM
  3. Chương trình giúp một học sinh cấp 1 học phép nhân, xử lý hàm rand, giúp mình với?
    Gửi bởi chankx trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 12-05-2009, 08:52 PM
  4. Code giúp add một key vào registry, ai giúp em?
    Gửi bởi olavien trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 12-12-2007, 08:45 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