01/10/2018, 08:30
Hỏi gọi đối tượng ra khỏi lớp trong private
#include <iostream>
#include <iomanip>
#include <string.h>
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);
char tensv();
};
char sinhvien::tensv()
{
}
void sinhvien::nhap()
{
sinhvien sv;
cout<<" nhap ten sv :";
cin.ignore(1);
cin.get(ten,20);
cout<<"nhap 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>=9&&dtb<10) return "A";
if((dtb>=8.5&&dtb<9)) 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[20];
int n;
cout<<"nhap so sinh vien:";
cin>>n;
for(int i=0;i<n-1;i++)
for(int j=i+1;j<n;j++)
if(sv[i].ten>sv[j].ten))
{
sinhvien str =sv[i];
sv[i]=sv[j];
sv[j]=str;
}
for(int i=0;i<n;i++)
{
sv[i].nhap();
}
cout<<"----------------------------------------------------------------------------------------------------------------------"<<endl;
cout<<" HOTEN MA SV DIEMTOAN DIEMLY Diemhoa DIEMTB DIEM HE 4 CHU "<<endl;
for(int i=0;i<n;i++)
{
sv[i].xuat();
cout<<endl;}
return 0;
}
Bài liên quan
code của bạn lỗi gì thế?
ten
là thuộc tính private nên chỉ gọi được trong các phương thức của object đó (nhap()
,xuat()
,hebon()
,tensv()
). Nếu muốn so sánh tên các sinh viên, phải dùngsv[i].tensv()>sv[j].tensv()
char sinhvien::tensv()
, khai báo xong, xây dựng chưa córeturn
(Mình không biết C++ thì xây dựng thế nào, không biết thế này có đúng không):char[] tensv();...
lỗi bạn ạ ko khai báo kiểu char [] tensv() đc
lỗi char ten[];
private ý
bạn viết thêm 1 hàm public lấy tên sinh viên. So sánh bằng kết quả trả về của cái hàm đó
mà đã dùng OOP thì nên dùng string thay char* cho khỏe.