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

Đề tài: Ko hiểu lắm!

  1. #1
    Ngày gia nhập
    03 2007
    Nơi ở
    Việt Nam
    Bài viết
    8

    Mặc định Ko hiểu lắm!

    //Nhap vao day so nguyen roi doi nguoc day so do

    #include<iostream.h>
    #include<conio.h>
    void main()
    {
    int a[100],i,n,s,tempt;
    cout<<"\nBan muon co mot mang bao nhieu phan tu: "<<endl;
    cin>>n;
    for(i=0;i<n;i++)
    {
    cout<<"\nNhap phan tu thu "<<i+1<<": ";
    cin>>a[i];
    }
    for(i=0;i<n/2;i++)
    {
    tempt=a[i];
    a[i]=a[n-i-1];
    a[n-i-1]=tempt;
    }
    for(i=0;i<n;i++)
    cout<<" "<<a[i];
    cout<<endl;
    getch();


    }

    Cái phần về mảng này minh chưa hiểu lắm, Anh em co thể giai thich giùm mình nhé!
    for(i=0;i<n/2;i++)
    {
    tempt=a[i];
    a[i]=a[n-i-1];
    a[n-i-1]=tempt;
    }
    giảii thích kỹ cho mình về đoạn này nhé. Cám ơn rất nhiều!
    Học! học nữa! học mãi...!
    Học không nổi nữa đi ngủ!

    Kiến thức là nguồn tài nguyên vô tận,
    Chia sẽ về kiến thức giúp chúng ta tiến lại gần nhau!

  2. #2
    Ngày gia nhập
    08 2006
    Nơi ở
    Hải Phòng
    Bài viết
    218

    Để đảo ngược một chuỗi bạn sẽ phải đổi chỗ phần tử a[1] với a[n], a[2] cho a[n-1]....a[n div 2] cho... nguyên tắc của đoạn code trên chính là như thế

  3. #3
    Ngày gia nhập
    03 2007
    Nơi ở
    Việt Nam
    Bài viết
    8

    Bạn nói chung chung quá, bạn có thể diễn tả thứ tư nó chạy ra sao ko!
    Học! học nữa! học mãi...!
    Học không nổi nữa đi ngủ!

    Kiến thức là nguồn tài nguyên vô tận,
    Chia sẽ về kiến thức giúp chúng ta tiến lại gần nhau!

  4. #4
    Ngày gia nhập
    03 2007
    Bài viết
    15

    Trích dẫn Nguyên bản được gửi bởi knownledge Xem bài viết
    //Nhap vao day so nguyen roi doi nguoc day so do
    Code:
    for(i=0;i<n/2;i++)
    	{
    		tempt=a[i];
    		a[i]=a[n-i-1];
    		a[n-i-1]=tempt;
    	}
    Này nhé:
    Vd n = 5: 1 2 3 4 5 => Sau khi đảo : 5 4 3 2 1.
    Code:
    i = 0; tempt = a[0] = 1;
    a[0] = a[5-0-1] = a[4] = 5;
    a[4] = tempt = 1;
    Code:
    i = 1; tem = a[1] = 2;
    a[1] = a[5-1-1] = a[3] = 4;
    a[3] = tempt = 2;
    =>tới đây thui : vì n/2 = 2
    Hoặc là dùng 1 mảng phụ,rồi dùng vòng lặp để gán các pt cuối của mảng ban đầu cho các pt của mảng phụ là ok.
    ...Every step that I take is another mistake to you...I'm sorry mom..

  5. #5
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    chậc có phải câu hỏi là đảo ngược 1 mảng không ? Sao mà phải rắc rối thế nhỉ ? Có thể làm vậy nè .

    for(int i=0,j=n-1;i<j;i++,j--)
    swap(A[i],A[j]);
    Như thế là được rồi .

  6. #6
    Ngày gia nhập
    06 2007
    Nơi ở
    Binh Duong
    Bài viết
    26

    Mặc định Ko hiểu lắm!

    Chà cái này
    for(i=0;i<n/2;i++)
    {
    tempt=a[i];
    a[i]=a[n-i-1];
    a[n-i-1]=tempt;
    }
    là để hoán vị hai phần tử đối xứng trong mảng. Ví dụ mảng a[10] thì
    a[0]..a[10]
    a[1]..a[9]
    a[2]...a[8]
    ...là các phần tử đối xứng nhau trong mảng a đấy.

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