Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 11 kết quả

Đề tài: Các bác xem dùm đoạn code sắp xếp!!!

  1. #1
    Ngày gia nhập
    11 2008
    Nơi ở
    Hà Nội
    Bài viết
    70

    Thumbs up Các bác xem dùm đoạn code sắp xếp!!!

    Em mới học về hàm và mảng, thử ngồi viết đoạn code sắp xếp tăng dần nhưng ko chạy.
    Các bác xem giùm:
    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<math.h>
    4. void sapxep()
    5. {
    6.     int i,j,n,A[100],temp;
    7.     for (i=0;i<n;i++)
    8.         for(j=0;j<n;j++)
    9.         if(A[i]>A[j])
    10.         {
    11.             temp=A[i];
    12.             A[i]=A[j];
    13.             A[j]=temp;
    14.         }
    15. }
    16. void main()
    17. {
    18.     clrscr();
    19.     int n;
    20.     int A[100],i;
    21.     printf("\n Nhap n=");
    22.     scanf("%d",&n);
    23.     printf("\n Nhap mang: \n");
    24.     for(i=0;i<n;i++)
    25.     {
    26.         printf("A[%d]=",i);
    27.         scanf("%d",&A[i]);
    28.     }
    29.     printf("\n Mang vua nhap:");
    30.     for(i=0;i<n;i++)
    31.     printf("%5d",A[i]);
    32.     sapxep();
    33.   getch();
    34. }
    Dân thường sống đẹp đè bẹp dân chơi.
    Hi [you]

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

    C Code:
    1. // hàm sắp xếp phải truyền tham số vào chứ không truyền nó biết đâu mà làm hả bạn :D
    2. void sapxep( int A[], int n )
    3. {
    4.     int i,j,temp;
    5.     for (i=0;i<n;i++)
    6.         for(j=i+1;j<n;j++) // ở đây chỉ cần dùng lại là j=i+1 là đủ
    7.         if(A[i]>A[j])
    8.         {
    9.             temp=A[i];
    10.             A[i]=A[j];
    11.             A[j]=temp;
    12.         }
    13. }

    ở dưới hàm main bạn đâu xuất nó ra sau khi sort đâu mà bạn nói là đúng hay không đúng nhỉ
    Đã được chỉnh sửa lần cuối bởi zkday2686 : 29-11-2008 lúc 10:03 PM.

  3. #3
    Ngày gia nhập
    11 2008
    Nơi ở
    Hà Nội
    Bài viết
    70

    Hic em quên mất nhưng ở chỗ sapxep() trong main

    Trích dẫn Nguyên bản được gửi bởi zodjac1990 Xem bài viết
    C Code:
    1. printf("\n Mang vua nhap:");
    2.     for(i=0;i<n;i++)
    3.     printf("%5d",A[i]);
    4.     sapxep();
    5.   getch();
    6. }
    em để là sapxep(int A[],int n) hay sapxep(int A[100],int n) hay sapxep() dều báo lỗi.Vạy em phải sửa thành gì???
    Dân thường sống đẹp đè bẹp dân chơi.
    Hi [you]

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

    Trích dẫn Nguyên bản được gửi bởi zodjac1990 Xem bài viết
    Hic em quên mất nhưng ở chỗ sapxep() trong main



    em để là sapxep(int A[],int n) hay sapxep(int A[100],int n) hay sapxep() dều báo lỗi.Vạy em phải sửa thành gì???
    C++ Code:
    1. sapxep(A,n);
    Ước mơ vươn tới Linux Developer.
    Đang trong quá trình tập luyện:
    1. C system programming
    2. GNU distribution
    3. Gtk+/Gnome Application Programming.

    Bác nào giỏi lĩnh vực này giúp Kim với nha. Kim cám ơn nhiều !!!

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

    sửa đi chút là được:

    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. void sapxep(int *A,int n)
    4. {
    5.     int i,j,temp;
    6.     for (i=0;i<n-1;i++)
    7.         for(j=i+1;j<n;j++)
    8.         if(A[i]>A[j])
    9.         {
    10.             temp=A[i];
    11.             A[i]=A[j];
    12.             A[j]=temp;
    13.         }
    14.     printf("\nMang sau khi sap xep la:");
    15.     for(i=0;i<n;i++)
    16.      printf("%5d",A[i]);
    17. }
    18. void main()
    19. {
    20.     clrscr();
    21.     int n;
    22.     int A[100],i;
    23.     printf("\n Nhap n=");
    24.     scanf("%d",&n);
    25.     printf("\n Nhap mang: \n");
    26.     for(i=0;i<n;i++)
    27.     {
    28.         printf("A[%d]=",i);
    29.         scanf("%d",&A[i]);
    30.     }
    31.     printf("\n Mang vua nhap:");
    32.     for(i=0;i<n;i++)
    33.     printf("%5d",A[i]);
    34.     sapxep(A,n);
    35.   getch();
    36. }

  6. #6
    Ngày gia nhập
    01 2008
    Nơi ở
    UIT
    Bài viết
    129

    Mặc định Các bác xem dùm đoạn code sắp xếp!!!

    Tại sao phải làm phức tạp hóa thuật toán nhỉ , trong khi chỉ cần:
    Code:
    for(i=0;i<n;++i)
        for(j=0;j<n-i;++j)
            if(a[j] > a[j+1]
            {
                 temp = a[j];
                 a[j] = a[j+1];
                 a[j+1] = temp;
            }

  7. #7
    Ngày gia nhập
    11 2008
    Nơi ở
    Hà Nội
    Bài viết
    70

    Thank mọi ngừoi đã giúp đặc biệt là bạn Phương, vui quá, chạy ngon lành
    Dân thường sống đẹp đè bẹp dân chơi.
    Hi [you]

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

    Trích dẫn Nguyên bản được gửi bởi Hok_bik_zi Xem bài viết
    Tại sao phải làm phức tạp hóa thuật toán nhỉ , trong khi chỉ cần:
    Code:
    for(i=0;i<n;++i)
        for(j=0;j<n-i;++j)
            if(a[j] > a[j+1]
            {
                 temp = a[j];
                 a[j] = a[j+1];
                 a[j+1] = temp;
            }
    à mình dùng ngay lại thuật toán sắp xếp của cậu zodjac1990, còn cách của cậu là sủi bọt có nhanh hơn thật nhưng mình muốn giữ nguyên code của cậu ấy cho cậu ấy dễ hiểu

  9. #9
    Ngày gia nhập
    11 2008
    Nơi ở
    Neverland
    Bài viết
    48

    Hai đoạn Code trên đều là buble sort cả đâu khác gì nhau . Làm phức tạp lên bằng cách dùng hàm để làm quen cách chia nhỏ chương trình giải quyết từng phần nhỏ divide and conquer .
    I'm superman

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

    Code của bạn nè đơn giản dễ hiểu mình cũng vưà làm, bạn nào cò code hay hơn thì bổ sung nha
    Code:
    /*sap xep mang*/
    
    #include<stdio.h>
    #include<conio.h>
    //nhap mang thu...
    void nhap(int a[], int n)
    {
    int i;
    for(i=1;i<=n;i++)
    {
    printf("\n[BT] Phan tu thu %d=",i); scanf("%d",&a[i]);
    }
    }
    //in mang
    void inmang(int a[], int n)
    {
    int i;
    for(i=1;i<=n;i++)
    printf("%2d",a[i]);
    printf("\n");
    }
    // sap xep
    void sapxep(int a[], int n)
     {
     int i,j,t;
    for(i=1;i<=n-1;i++)
     for(j=i+1;j<=n;j++)
      if (a[i]>a[j])
    {
    t=a[i];
    a[i]=a[j];
    a[j]=t;
    }
     }
    
    void main()
    {
    int b[20],n;
    textcolor(6);
    clrscr();
    printf("\nnhap n=") ; scanf("%d",&n);
    nhap(b,n);
    
    printf("\nmang cua ban vua nhap la:");
    inmang(b,n);
    
    printf("\nmang da sap xep:");
    sapxep(b,n);
    inmang(b,n);
    
    getch();
    }

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

  1. Lập trình C++ coi dùm minh bài code sai ở chỗ nào và sữa dùm mình với
    Gửi bởi hchuy94 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 02-09-2013, 10:16 AM
  2. Lập trình C Nhờ sửa dùm đoạn code chọn mệnh giá tiền
    Gửi bởi haidang12039 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 8
    Bài viết cuối: 29-07-2013, 08:05 PM
  3. các pro sửa dùm mình code này! cám ơn rất nhìu..
    Gửi bởi fulky trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 04-10-2012, 10:01 PM
  4. mình code mãi vẫn lỗi các bạn chi dùm mình với
    Gửi bởi thienbk89 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 20-07-2012, 05:47 PM
  5. Ai sữa dùm cái code này với..mình cần lắm
    Gửi bởi sangu trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 11-12-2008, 12:14 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