Trang 2 trên tổng số 2 Đầu tiênĐầu tiên 12
Từ 11 tới 16 trên tổng số 16 kết quả

Đề tài: Không sắp xếp được struct

  1. #11
    Ngày gia nhập
    04 2018
    Bài viết
    8

    Mặc định Không sắp xếp được struct

    Trích dẫn Nguyên bản được gửi bởi MHoang Xem bài viết
    Xem qua mã bên trên thì thấy phần lớn các chức năng sắp xếp chưa cài đặt, có 1 cái cài đặt thì bạn lại so sánh chuỗi trực tiếp : if(sv[i].MaSinhVien > sv[j].MaSinhVien) <== sai
    Bạn phải dùng các hàm so sánh chuỗi nhé : strcmp, strcmpi,...

    Mình mới làm đến sắp xếp chọn để chạy thử trước ấy mà.
    Mình có sửa lại 1 đoạn sắp xếp mã sinh viên xong
    Code:
    		case 'a':
    			system("cls");
    			printf("\n\t\tSap Xep Theo Ma Sinh Vien!\n\n");
    			for(i = 0; i < n - 1; i ++) {
    				for( j = i + 1; j < n; j++) {
    					if(strcmp(sv[i].MaSinhVien, sv[j].MaSinhVien) > 0)
    					{
    						SinhVien a;
    						a = sv[i];
    						sv[i] = sv[j];
    						sv[j] = a;
    					}
    				}
    			}
    			InDanhSach(sv, n);
    			break;
    nhưng khi chạy thử thì bấm vào mục sắp xếp chọn mã sinh viên là chương trình sập luôn không chạy nữa. Bạn xem giúp mình còn sai ở đâu nữa ạ.

  2. #12
    Ngày gia nhập
    02 2014
    Nơi ở
    TP.HCM
    Bài viết
    902

    Cũng chưa biết sao nhưng đoạn mã trên của bạn lại không ổn. Cấu trúc SinhVien bên trong nó có chứa con trỏ hay địa chỉ nên không thể dùng phép gán được.
    Bạn thử vài mã sau:

    SinhVien a;
    memcpy(&a, sv[i], sizeof(SinhVien));
    memcpy(sv[i], sv[j], sizeof(SinhVien));
    memcpy(sv[j], &a, sizeof(SinhVien));

    Có gì thì bàn tiếp nhé.

  3. #13
    Ngày gia nhập
    04 2018
    Bài viết
    8

    [Error] cannot convert 'SinhVien' to 'const void*' for argument '2' to 'void* memcpy(void*, const void*, size_t)'
    [Error] cannot convert 'SinhVien' to 'void*' for argument '1' to 'void* memcpy(void*, const void*, size_t)'
    [Error] cannot convert 'SinhVien' to 'void*' for argument '1' to 'void* memcpy(void*, const void*, size_t)'

    sau khi thử thì nó báo lỗi :(((((( lạ nhỉ

  4. #14
    Ngày gia nhập
    02 2014
    Nơi ở
    TP.HCM
    Bài viết
    902

    Trích dẫn Nguyên bản được gửi bởi skydefender Xem bài viết
    [Error] cannot convert 'SinhVien' to 'const void*' for argument '2' to 'void* memcpy(void*, const void*, size_t)'
    [Error] cannot convert 'SinhVien' to 'void*' for argument '1' to 'void* memcpy(void*, const void*, size_t)'
    [Error] cannot convert 'SinhVien' to 'void*' for argument '1' to 'void* memcpy(void*, const void*, size_t)'

    sau khi thử thì nó báo lỗi :(((((( lạ nhỉ
    Tôi sẽ bỏ một ngày viết lại 100%, tùy trình biên dịch mà nó hét thôi, nó nói đúng khi mình chưa ép kiểu, tôi biết rằng bạn đang sài IDE khác nên tôi không dám nói nhiều, con trỏ void sao bạn không sử dụng thay đổi theo mình muốn, tôi không thể thay bạn trong mã thực. Bạn phải tùy nghi chứ.

  5. #15
    Ngày gia nhập
    02 2014
    Nơi ở
    TP.HCM
    Bài viết
    902

  6. #16
    Ngày gia nhập
    04 2018
    Bài viết
    8

    Mặc định Không sắp xếp được struct

    Có vẻ lỗi không sắp xếp được là do mình lưu dữ liệu nhập vào file txt và chương trình không sắp xếp được dữ liệu đó vì mình chưa gọi ra hay sao ấy. bạn có cách nào lấy dữ liệu từ file ra để thao tác sắp xếp không chỉ mình với

Tags của đề tài nà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