01/10/2018, 08:29
Lỗi bài sinh viên c++ mn giúp với
mọi người giúp em với k hiểu sao chỗ xuất điểm hệ 4
nếu như điểm A B C D F thì ko sao NẾU B+ C+ D+ thì chỉ xuất mỗi dấu +
e nát óc rồi
#include <iostream>
#include <iomanip>
using namespace std;
class sinhvien
{ private:
char ten[20];
float diemtoan;
float diemly;
float diemhoa;
float dtb;
char mssv[20];
public:
void nhap();
void xuat();
string hebon(float dtb);
};
void sinhvien::nhap()
{
sinhvien sv;
cout<<" nhap ten sv :";
cin.ignore(1);
cin.get(ten,20);
cout<<"Nnhap MSSV :";
cin>>mssv;
cout<<"nhap diem toan:";
cin>>diemtoan;
cout<<"nhap diem ly :";
cin>>diemly;
cout<<"nhap diem hoa :";
cin>>diemhoa;
dtb=(diemtoan+diemly+diemhoa)/3.0;
}
void sinhvien::xuat()
{ cout<<setw(15)<<ten;
cout<<setw(15)<<mssv<<setw(12)<<diemtoan;
cout<<setw(12)<<diemly<<setw(12)<<diemhoa;
cout<<setw(12)<<dtb;
cout<<setw(12)<<hebon(dtb)<<endl;
}
string sinhvien::hebon(float dtb)
{
if(dtb==10) return 'A';
if((dtb>=8.5&&dtb<10)) return 'B+';
if((dtb>=7.5&&dtb<8.5)) return 'B';
if((dtb>=6.5&&dtb<7.5)) return 'C+';
if((dtb>=5.5&&dtb<6.5)) return 'C';
if((dtb>=4.5&&dtb<5.5)) return 'D+';
if((dtb>=3.5&&dtb<4.5)) return 'D';
if(dtb<3.5) return 'F';
}
int main()
{ cout<<setiosflags(ios::showpoint)<<setprecision(2);
sinhvien sv[100];
int n;
cout<<"nhap so sinh vien:";
cin>>n;
for(int i=0;i<n;i++)
{
sv[i].nhap();
}
cout<<" hOTEN MA SV DIEMTOAN DIEMLY HE 10 DIEM HE 4 SO DIEM HE 4 CHU "<<endl;
for(int i=0;i<n;i++)
{
sv[i].xuat();
cout<<endl;}
return 0;
}
Bài liên quan
thử dùng return “C+”; chưa
Bạn sai ở chỗ dùng nháy đơn (dành cho kí tự). Bài này phải dùng nháy kép.
Thầy mình bảo dùng nháy đơn ạ =))) mấy bác sửa xong chạy đc thì coppy lên júp với
có thể thầy nhầm, C+ là 2 kí tự , là 1 xâu rồi , phải dùng hằng " " chứ k thể dùng ’ ’
'...'
là kiểu char, trong nháy đơn thì chỉ được có 1 ký tự thôi. Hàm của bạn là string màreturn 'C'
thì tức làreturn (string)'C'
ấy, và kết quả thu được là"C"