Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 4 của 4
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Thắc mắc xóa phần tử lớn nhất trong mảng ?

    Chào các bác, Hàm bên dưới là xoá phần tử có giá trị lớn nhất trong mảng 1 chiều, cho em hỏi tại sao lại có i-- ở dòng cuối cùng ? Cảm ơn nhiều !

    void xoa(int a[], int &n)
    {
    int max=a[0],i;
    for(i=1;i<n;i++)
    if(a[i]>max)
    max=a[i];
    for(i=0;i<n;i++)
    if(a[i]==max)
    {
    for(int j=i;j<n;j++)

    a[j]=a[j+1];
    n--;
    i--;
    }
    }

  2. #2
    Ngày tham gia
    Sep 2015
    Đang ở
    Số 60 Thái Hà, Đống Đa, Hà Nội
    Bài viết
    0
    ^ Thực ra ko cần phải 2 for lồng nhau [IMG]images/smilies/biggrin.png[/IMG]

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Chào bạn prog10,

    Mình chỉ muốn hỏi tại sao lại có i--, còn may dong tren thi minh hiu roi, ban bit thi giai thich giup minh với, cam on ban nhieu nhieu !!!

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi manhsu91
    Chào bạn prog10,

    Mình chỉ muốn hỏi tại sao lại có i--, còn may dong tren thi minh hiu roi, ban bit thi giai thich giup minh với, cam on ban nhieu nhieu !!!
    Sau vòng lặp thì a[i] này ko phải là a[i] hồi nãy (do nó bị xóa rồi), nên trừ lại là đúng, nếu ko bạn bị miss 1 phần tử (nếu 2 hay nhiều pt liên tục đều max - cách này hơi dở)

    Mà phần xóa dùng 1 for là đc, hì [IMG]images/smilies/smile.png[/IMG]

    p/s: sai box...

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • 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
  •