Hiển thị kết quả từ 1 đến 4 / 4
  1. #1
    Tham gia
    11-12-2007
    Bài viết
    156
    Like
    0
    Thanked 0 Times in 0 Posts

    Tệ thật ! jai thích hàm sắp xếp 1 mảng tăng

    void sapxeptang( int a[],int n)
    {
    for( int i=0;i<n;i++)
    for( int j=n-1;j>i;j++)
    if(a[i]<a[j-1])
    {
    int t=a[i];
    a[i]=a[j-1];
    a[j-1]=t;
    }
    }
    # include <stdio.h>
    # include <conio.h>
    # include <math.h>
    void nhapmang( int a[], int &n );
    void xuatmang( int a[], int n);
    long tongnt( int a[], int n);
    int ktnt ( int n);
    int manggiam( int a[] , int n);
    void sapxeptang(int a[] , int n);
    void main ()
    {
    int a[100],n;
    clrscr();
    nhapmang( a, n);
    printf( "\n mang vua nhap la :\n");
    xuatmang (a,n );
    printf ("\n tong nguyen to la:%d",tongnt(a,n));
    int dt=manggiam(a,n);
    if(!dt) printf("\n Mang k0 giam");
    else printf(" \n Mang giam ", dt);
    sapxeptang(a,n);
    printf("\n Mang sau khi sap xep tang la:\n");
    getch ();
    }


    void nhapmang( int a[],int & n)
    {
    printf ( " nhap phan tu :\n ");
    scanf ("%d", &n);
    for ( int i= 0 ; i<n ;++i)
    {
    printf (" nhap phan tu a[%d]:",i);
    scanf( "%d",& a[i]);
    }
    }
    void xuatmang( int a[], int n)
    {
    for ( int i= 0; i<n ;i++)
    printf ("%4d", a[i]);
    }
    long tongnt( int a[], int n)
    {
    int s=0;
    for( int i=0 ; i<n ;i++)

    if (ktnt(a[i]))
    s=s+a[i];

    return s;
    }
    int ktnt( int n)
    {
    if ( n< 2) return 0;
    for ( int i = 2;i<= n/2 ;i++)
    if ( n%i==0) return 0;
    return 1;
    }
    int manggiam( int a[], int n)
    {
    int d1=0;
    for( int i=0;i<n-1;i++)
    {
    if(a[i]<a[i+1])
    d1++;
    }
    if(d1!=0) return 0;
    else return 1;
    }
    void sapxeptang( int a[], int n)
    {
    for( int i=0; i<n;i++)
    for( int j=i+1;j<n;j++)
    if( a[i]<a[j-1] )
    {
    int t=a[i];
    a[j]=a[j-1];
    a[j-1]=t;
    }
    }
    sao m` la`m ma` nó k0 suất mảng tăng là seo,có link của bài này trong dien đàn thì gửi cho mình
    Được sửa bởi ruacon2008 lúc 14:26 ngày 25-03-2008
    Quote Quote

  2. #2
    Tham gia
    16-07-2004
    Bài viết
    337
    Like
    0
    Thanked 0 Times in 0 Posts
    Code:
    for( int i=0;i<n;i++)
       for( int j=n-1;j>i;j++)
    Điều kiện dừng của vòng for thứ 2 không có.j=n-1 đã lớn hơn i rồi, mà cứ tăng hoài thì làm sao dừng vòng for ?

  3. #3
    Tham gia
    07-09-2007
    Bài viết
    5
    Like
    0
    Thanked 0 Times in 0 Posts
    trong hàm sắp xếp tăng: Muốn sắp tăng mà lại cho "Nếu a[i] < a[j] thì hoán vị" ??? Lẽ ra là a[i] > a[j] mới đúng. Hàm này nên sửa lại là:

    void sapxeptang( int a[], int n)
    {
    for( int i=0; i<n;i++)
    for( int j=i+1;j<n;j++)
    if( a[i]>a[j] )
    {
    int t=a[i];
    a[j]=a[i];
    a[i]=t;
    }

  4. #4
    Tham gia
    16-03-2008
    Bài viết
    17
    Like
    0
    Thanked 2 Times in 2 Posts

    Hạnh phúc

    Sửa như billgatesvn là đúng rồi đó.và bạn chú ý thêm.phần nguyên mẫu của hàm nhập :void nhapmang( int a[], int &n );
    việc bạn truyền n vào dưới dạng int &n là truyền vào dưới dạng tham chiêú.về bản chất,C thì không có dạng này,chỉ có trong C++ thôi.nếu bạn dùng truyền tham số dưới dạng tham chiếu thì nên khai báo thêm một biến tham chiếu nữa tham chiếu tới n.để rõ ràng hơn và tránh nhầm lẫn.

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •