Xuất danh sách sinh viên sau khi đã xóa một số sinh viên

Mọi người giúp em kiểm tra code em bị sai ở chỗ nào với ạ, em nộp bài lên web của trường thì chỉ được 62đ nhưng em không biết bị sai chỗ nào ạ

#include <iomanip>
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
#define MAXN 100
struct SinhVien
{
    char MASV[10];
    char HoTen[100];
    char NgaySinh[12];
    char GioiTinh;
    float DiemToan, DiemLy, DiemHoa, DTB;
};
void Nhap(char hoTenCanXoa[])
{
    cin.getline(hoTenCanXoa,100);
}
void Nhap(SinhVien A[], int &n)
{
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cin.ignore(1, '\n');
        cin.getline(A[i].MASV, 10);
        cin.getline(A[i].HoTen, 100);
        cin.getline(A[i].NgaySinh, 12);
        cin >> A[i].GioiTinh;
        cin >> A[i].DiemToan >> A[i].DiemLy >> A[i].DiemHoa;
        A[i].DTB = (A[i].DiemToan + A[i].DiemLy + A[i].DiemHoa) / 3;
    }
}
void Xuat(SinhVien A[], int n)
{
    for (int i = 0; i < n; i++)
    {
            cout << A[i].MASV << "\t" << A[i].HoTen << "\t" << A[i].NgaySinh << "\t" << A[i].GioiTinh << "\t" << A[i].DiemToan << "\t" << A[i].DiemLy << "\t" << A[i].DiemHoa << "\t" << setprecision(3) << A[i].DTB;
        cout << endl;
    }
}
void XoaTheoHoTen(SinhVien A[], int &n, char hoTenCanXoa[])
{
    for (int i = 0; i < n; i++)
    {
        if (strcmp(A[i].HoTen, hoTenCanXoa)==0)
        {
            A[i] = A[i + 1];
            n--;
        }
    }
}
int main()
{
    SinhVien A[MAXN];
    char hoTenCanXoa[100];
    int n;
    Nhap(hoTenCanXoa);
    Nhap(A, n);
    XoaTheoHoTen(A, n, hoTenCanXoa);
    Xuat(A, n);
    return 0;
}

Có ví dụ hay yêu cầu gì ở phần nhập/xuất không bạn? Làm đúng, không sai một chữ nào thì mới được.

Mà đề bài yêu cầu xóa tất cả chứ đâu phải xóa một đâu. Bạn đang chỉ xóa một sinh viên thôi.

2 Likes

Bạn kiểm tra lại thuật toán xoá một phần tử trong mảng trong hàm XoaTheoHoTen nha.
Theo như cách bạn làm thì xoá một phần tử A[i] bằng cách lấy giá trị A[i + 1] đè vào ô A[i], như vậy thành ra giá trị A[i + 1] bị duplicated.

2 Likes

em cảm ơn ạ, em sửa lại hàm void XoaTheoHoTen rồi ạ

mình kiểm tra lại rồi ạ, cảm ơn ạ

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?