01/10/2018, 08:19

Hỏi về visual studio 2015

Mọi người chạy thử giúp mình đoạn code này cái. Mình viết ra sao nó ko nhập được tên sinh viên. Máy mình win 10 , viết trên visual studio 2015.
CODE :

#include<iostream>
using namespace std;
#include<string> 




struct sinhvien
{
	string hoten;
	string mssv;
	float diemtb;
		
};
typedef struct sinhvien SinhVien; 



struct danhsach
{
	SinhVien arr[100]; 
	int n; 
};
typedef struct danhsach DanhSach;

//=============================================================

// hàm nhập thông tin 1 thằng sinh viên
void Nhap_Thong_Tin_1_Thang_Sinh_Vien(SinhVien &sv)
{
	// vòng lặp nhập họ tên sinh viên
	do{

		fflush(stdin); // xóa bộ đệm
		cout << "
Nhap ho ten sinh vien: ";
		getline(cin, sv.hoten);
		if (sv.hoten.length() > 30){
		
			cout << "
Ho ten toi da 30 ki tu. Xin kiem tra lai";
		}

	} while (sv.hoten.length() > 30);
	
	// vòng lặp nhập mã số sinh viên
	do
	{
		
		fflush(stdin); // xóa bộ đệm
		cout << "
Nhap ma so sinh vien: ";
		getline(cin, sv.mssv);
		if (sv.mssv.length() > 10){

			cout << "
Ma so sinh vien toi da 10 ki tu. Xin kiem tra lai";
		}
	} while (sv.mssv.length() > 10);
	
	do{
		// nhập điểm cho sinh viên
		cout << "
Nhap diem trung binh sinh vien: ";
		cin >> sv.diemtb;
		if (sv.diemtb < 0 || sv.diemtb > 10)
		{
		
			cout << "
Diem trung binh khong duoc < 0 hay > 10";
		}
	} while (sv.diemtb < 0 || sv.diemtb > 10);
	
}

// hàm xuất thông tin 1 thằng sinh viên
void Xuat_Thong_Tin_1_Thang_Sinh_Vien(SinhVien sv)
{
	// xuất họ tên sinh viên
	cout << "
Ho ten sinh vien: " << sv.hoten;

	// xuất mã số sinh viên
	cout << "
Ma so sinh vien: " << sv.mssv;

	// xuất điểm sinh viên
	cout << "
Diem trung binh sinh vien: " << sv.diemtb;
}

// hàm nhập danh sách sinh viên
void Nhap_Danh_Sach_Sinh_Vien(DanhSach &ds)
{
	// vòng lặp  nhập nhiều thằng sinh viên
	for (int i = 0; i < ds.n; i++)
	{
		cout << "
		 NHAP THONG TIN SINH VIEN THU " << i + 1 << endl;
		
		Nhap_Thong_Tin_1_Thang_Sinh_Vien(ds.arr[i]);
	
	}
}

// hàm xuất danh sách sinh viên
void Xuat_Danh_Sach_Sinh_Vien(DanhSach ds)
{
	// vòng lặp  xuất ra nhiều thằng sinh viên
	for (int i = 0; i < ds.n; i++)
	{
		cout << "
		THONG TIN SINH VIEN THU " << i + 1 << endl;
		
		Xuat_Thong_Tin_1_Thang_Sinh_Vien(ds.arr[i]);

	}
}


float Tim_Diem_Trung_Binh_Cao_Nhat(DanhSach ds)
{

	int max = ds.arr[0].diemtb;
	for (int i = 1; i < ds.n; i++)
	{
	
		if (ds.arr[i].diemtb > max)
		{

			max = ds.arr[i].diemtb;

		}

	}
	return max;
}


void Tim_Sinh_Vien_Diem_Trung_Binh_Thap_Nhat(DanhSach ds)
{
	
	int min = ds.arr[0].diemtb;
	for (int i = 1; i < ds.n; i++)
	{
		if (ds.arr[i].diemtb < min)
		{
			min = ds.arr[i].diemtb;
		}
	}
	
	
	for (int i = 0; i < ds.n; i++)
	{
		if (ds.arr[i].diemtb == min)
		{
			
			Xuat_Thong_Tin_1_Thang_Sinh_Vien(ds.arr[i]);

		}
	}

}

int main()
{
	DanhSach ds; 

	cout << "
Nhap so luong sinh vien: ";
	cin >> ds.n; // nhập giá trị cho biến n

	cout << "


		NHAP DANH SACH SINH VIEN
";
	Nhap_Danh_Sach_Sinh_Vien(ds); // nhập danh sách sinh viên
	cout << "


		XUAT DANH SACH SINH VIEN";
	Xuat_Danh_Sach_Sinh_Vien(ds);

	float max = Tim_Diem_Trung_Binh_Cao_Nhat(ds);
	cout << "

	Diem trung binh cao nhat la: " << max;
	cout << "

		 DANH SACH SINH VIEN CO DIEM TRUNG BINH THAP NHAT
";
	Tim_Sinh_Vien_Diem_Trung_Binh_Thap_Nhat(ds);
	system("pause");
	return 0;
}
Người bí ẩn viết 10:31 ngày 01/10/2018

Bạn thử thay fflush(stdin); thành while (getchar() != '\n' && getchar() != EOF) {} thử xem, vì mình nhớ man mán fflush(stdin); không hoạt động trong VS 2013 trở lên.

Bài liên quan
0