Chương trình không cho nhập MSSV

Tại sao chương trình không cho em nhập MSSV ạ ? Em cảm ơn mọi người nhiều

#include <iostream>
#include <string>
using namespace std;
const int MAXSIZE = 45;
struct SinhVien {
	string MSSV;
	string ho_Ten;
	string dia_Chi;
	int namSinh = 0;
	double diemToan = 0;
	double diemVan = 0;
	double diemNgoaiNgu = 0;
};
void nhap1(SinhVien& sv);
void nhapDS(SinhVien sinhvien[],int n);
void xuat1(SinhVien sv);
void xuat(SinhVien sinhvien[],int n);
double tinhDTB(SinhVien& sv);
void trungBinh(SinhVien sinhvien[], int n);
void xepLoai(SinhVien sinhvien[], int n);

int main() {
	SinhVien arrsv[MAXSIZE];
	int n;
	do {
		cout << "Nhap si so sinh vien trong lop: ";
		cin >> n;
		if (n <= 0 || n > 45)
			cout << "Nhap khong hop le !!!" << endl;
	} while (n <= 0 || n > 45);
	nhapDS(arrsv, n);
	xuat(arrsv,n);
	trungBinh(arrsv, n);
	xepLoai(arrsv, n);
}

void nhap1(SinhVien& sv) {
	cout << "+ Nhap MSSV: ";
	getline(cin, sv.MSSV);
	cout << "+ Nhap ho ten: ";
	getline(cin, sv.ho_Ten);
	cout << "+ Nhap dia chi: ";
	getline(cin, sv.dia_Chi);
	cout << "+ Nhap nam sinh: ";
	cin >> sv.namSinh;
	cout << "+ Diem toan: ";
	cin >> sv.diemToan;
	cout << "+ Diem van: ";
	cin >> sv.diemVan;
	cout << "+ Diem anh: ";
	cin >> sv.diemNgoaiNgu;
}
void nhapDS(SinhVien sinhvien[],int n) {
	for (int i = 0; i < n; i++) {
		cout << "Nhap thong tin sinh vien thu " << i + 1 << endl;
		nhap1(sinhvien[i]);
	}
}
void xuat1(SinhVien sv) {
	cout << "MSSV: " << sv.MSSV << endl;
	cout << "Ho ten: " << sv.ho_Ten << endl;
	cout << "Dia chi:" << sv.dia_Chi << endl;
	cout << "Nam sinh: " << sv.namSinh << endl;
	cout << "Diem toan: " << sv.diemToan << endl;
	cout << "Diem van: " << sv.diemVan << endl;
	cout << "Diem anh: " << sv.diemNgoaiNgu << endl;
}
void xuat(SinhVien sinhvien[],int n) {
	cout << "Ban muon xuat thong tin cua sinh vien STT bao nhieu ?" << endl;
	cin >> n;
	xuat1(sinhvien[n - 1]);
}
double tinhDTB(SinhVien &sv){
	double tb = 0;
	tb = ((sv.diemToan + sv.diemVan) * 2 + sv.diemNgoaiNgu) / 5;
	return tb;
}
void trungBinh(SinhVien SinhVien[], int n) {
	for (int i = 0; i < n; i++) {
		cout << "+ Diem trung binh va thong tin sinh vien STT " << i + 1 << endl;
		cout << "- MSSV: " << SinhVien[i].MSSV << endl;
		cout << "- Ho ten: " << SinhVien[i].ho_Ten << endl;
		cout << "- Diem trung binh: " << tinhDTB(SinhVien[i]) << endl;
	}
}
void xepLoai(SinhVien sinhvien[], int n) {
	for (int i = 0; i < n; i++) {
		if (tinhDTB(sinhvien[i]) > 8)
			cout << "+ Xep loai Gioi" << endl;
		else if (tinhDTB(sinhvien[i]) >= 6.5 && tinhDTB(sinhvien[i]) < 8)
			cout << "+ Xep loai Kha" << endl;
		else if (tinhDTB(sinhvien[i]) >= 5 && tinhDTB(sinhvien[i]) < 6.5)
			cout << "+ Xep loai Trung Binh" << endl;
		else
			cout << "+ Xep loai Duoi Trung Binh" << endl;
	}
}

@khoa1deptrai Bạn vui lòng đọc warning message mà mình gửi cho bạn, edit topic này và báo lại cho mình biết. Nếu trong vòng 24h kể từ khi topic được tạo mà bạn không có phản hồi thì topic này sẽ tự động bị đóng.

Cho nhập đấy chứ!
Cụ thể bạn nhập thế nào mà bị vậy?
Lưu ý: nhập chuỗi (getline()) sau khi nhập số sẽ bị như thế, điều đó hoàn toàn đúng. Vì chuỗi nhận được là 1 chuỗi rỗng ("").
Tìm hiểu về cin.ignore() nhé.

5 Likes

Em hiểu rồi … Cảm ơn anh nhiều nhé

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