mọi người cho e hỏi e tạo 1 danh sách các sinh viên bằng truct nhưng khi nhập thì nó bị lỗi ko co nhập mssv nó bỏ qua câu lệnh của e chỉ nhập được tên với dtb thôi. e dùng hàm fflush(stdin); nhưng vẫn ko dc mong mọi người giúp ạ.
#include "stdafx.h"
#include <string.h>
#include <iostream>
using namespace std;
typedef struct SV
{
char ten[30];
char mssv[9];
float dtb;
}SV;
void nhapn(int &n)
{
cout << "nhap so sinh vien:";
cin >> n;
}
void NhapSV(SV &sv)
{
fflush(stdin);
cout << "nhap ma sv:";
cin.getline(sv.mssv, 9);
fflush(stdin);
cout << "nhap ten: ";
cin.getline(sv.ten, 30);
fflush(stdin);
cout << "nhap diem tb:";
cin >> sv.dtb;
}
void NhapdsSV(SV DS[], int n)
{
for (int i = 0; i<n; i++)
{
cout << "nhap ten sv thu " << i + 1 << ":" << endl;
NhapSV(DS[i]);
}
}
void XuatdsSV(SV DS[], int n)
{
for (int i = 0; i<n; i++)
{
cout << "\n";
fflush(stdin);
cout << "Sinh vien thu " << i + 1 << ": " << endl;
cout << "Ten sinh vien: " << DS[i].ten;
fflush(stdin);
cout << "\nMa so sinh vien: " << DS[i].mssv;
cout << "\nDTB=" << DS[i].dtb;
}
}
void XuatSV(SV sv)
{
cout << "Ma so sinh vien:" << sv.mssv << endl;
cout << "Ten sinh vien:" << sv.ten << endl;
cout << "Diem trung binh:" << sv.dtb << endl;
}
//Li?t kê sinh viên có đi?m trung b?nh cao nh?t l?p h?c
void Lk_dtbMax(SV DS[], int n)
{
float max;
max = DS[0].dtb;
for (int i = 0; i < n; i++)
{
if (DS[i].dtb>max)
max = DS[i].dtb;
}
cout << endl;
cout << "sinh vien dat diem cao nhat: " << endl;
for (int i = 0; i < n; i++)
{
if (DS[i].dtb == max)
{
cout << "ten";
puts(DS[i].ten);
cout << "ma sv:";
puts(DS[i].mssv);
cout << "diem TB=" << DS[i].dtb << endl;
}
}
}
int main()
{
int n;
SV sv;
SV DS[100];
nhapn(n);
//NhapSV(sv);
NhapdsSV(DS, n);
XuatdsSV(DS, n);
Lk_dtbMax(DS, n);
system("pause");
return 0;
}