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

Đề tài: Xóa phần tử trong danh sách sinh viên với điều kiện k

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

    Mặc định Xóa phần tử trong danh sách sinh viên với điều kiện k

    Mình có 1 hàm xóa sinh viên có điểm < 5 như sau. Mọi người cho hỏi mình phải làm sao để xuất ra ds sinh viên sau khi xóa. Thanks

    Code:
    void xoa(Student *a, int n)
    {
    	int i=0;
    	while(i<n)
    	{
    		if(a[i].diem<5)
    		{
    			for(int j=i;j<n-1;j++)
    				a[j]=a[j-1];
    			n--;
    		}
    		else
    			i++;
    	}
    }
    Đã được chỉnh sửa lần cuối bởi canhkho : 16-09-2011 lúc 08:58 PM.

  2. #2
    Ngày gia nhập
    03 2011
    Nơi ở
    Bình Dương, Hồ Chí Minh
    Bài viết
    392

    Trích dẫn Nguyên bản được gửi bởi canhkho Xem bài viết
    Mình có 1 hàm xóa sinh viên có điểm < 5 như sau. Mọi người cho hỏi mình phải làm sao để xuất ra ds sinh viên sau khi xóa. Thanks

    Code:
    void xoa(Student *a, int n)
    {
    	int i=0;
    	while(i<n)
    	{
    		if(a[i].diem<5)
    		{
    			for(int j=i;j<n-1;j++)
    				a[j]=a[j-1];
    			n--;
    			int k=n;
    		}
    		else
    			i++;
    	}
    }
    Bài của bạn nếu như tìm thấy sinh viên có điểm dưới 5 thì các câu lệnh trong if(a[i].diem<5) sẽ được thực hiện, và cũng vì vậy mà dòng else sẽ không chạy=> biến i không tăng lên được! =>vòng lặp vô tận

  3. #3
    Ngày gia nhập
    05 2010
    Bài viết
    59

    :d không đâu. Nếu bạn nghĩ vậy thì đã nhầm, khi có while(i<n) chỉ là điều kiện để nó xóa phần tử nào có điểm < 5. Else đó xảy ra khi những sinh viên có điểm >5 thôi.

  4. #4
    Ngày gia nhập
    03 2011
    Nơi ở
    Bình Dương, Hồ Chí Minh
    Bài viết
    392

    dòng lệnh:
    for(int j=i;j<n-1;j++)
    a[j]=a[j-1];
    sao lại là a[j-1], đáng lẻ bạn phải "đôn" phần từ phía sau lên chứ
    làm cách này thì nó sẽ copy giá trị của phần tử phía trước phần tử dưới 5, copy cho các phần tử phía sau nó!
    sửa lại thành a[j+1]

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

    Đúng rồi, mình cũng sửa lại rồi. a[j+1]. Thanks

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

  1. Lập trình C++ Gặp lỗi lặp vô hạn khi xuất danh sách sinh viên trong code của bài danh sách sinh viên
    Gửi bởi boysieuda trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 16-05-2013, 04:57 PM
  2. Xóa một sinh viên trong một danh sách sinh viên
    Gửi bởi tuanvi261 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 19-04-2012, 07:57 PM
  3. Bài tập quản lý sinh viên trong lập trình C#. Tìm kiếm sinh viên in ra cả danh sách?
    Gửi bởi anhduc12c5 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 24-08-2011, 08:32 AM
  4. Chương trình quản lí sinh viên viết trong visual c++ 2010. Lỗi không chạy khi in danh sách sinh viên theo năm
    Gửi bởi hikaru1015 trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 9
    Bài viết cuối: 03-06-2011, 09:31 AM
  5. Bài tập C Tìm phần tử chẵn trong dãy Fibonacci (có điều kiện)
    Gửi bởi cr9 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 05-04-2011, 02:18 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