Họ và tên: Vàng Văn Quyn
Nhóm: 01 (Bảo Thắng + Si Ma Cai)
Lớp: Tin A20-PH Lào Cai.
Môi trường: Visual Studio 2019 (Console)
* Không kiểm tra điểm nhập vào (0 <= điểm <= 10)
// HSBaiktso2.cpp : This file contains the 'main' function. Program execution begins and ends there.
// Doc tep ghi tep nhi phan
#include <iostream>
#include <iomanip>
using namespace std;
class HOCSINH {
private:
char maso[10], hotendem[30], ten[15];
int tuoi;
float toan, van, anh;
public:
HOCSINH();
HOCSINH(string maso, string hotendem, string ten, int tuoi, float toan, float van, float anh);
void NHAP();
float DTB();
void INRA();
string getTen() { return this->ten; }
};
HOCSINH::HOCSINH() {
strcpy_s(this->maso, "");
strcpy_s(this->hotendem, "");
strcpy_s(this->ten, "");
this->tuoi = 0;
this->toan = 0;
this->van = 0;
this->anh = 0;
}
HOCSINH::HOCSINH(string maso, string hotendem, string ten, int tuoi, float toan, float van, float anh) {
strcpy_s(this->maso, maso.c_str());
strcpy_s(this->hotendem, hotendem.c_str());
strcpy_s(this->ten, ten.c_str());
this->tuoi = tuoi;
this->toan = toan;
this->van = van;
this->anh = anh;
}
void HOCSINH::NHAP() {
cout << "Ma so: "; cin.getline(this->maso, 10);
cout << "Ho va ten dem: "; cin.getline(this->hotendem, 30);
cout << "Ten: "; cin.getline(this->ten, 15);
cout << "Tuoi: "; cin >> tuoi;
cout << "Diem toan: "; cin >> this->toan;
cout << "Diem van: "; cin >> this->van;
cout << "Diem T. Anh: "; cin >> this->anh;
}
float HOCSINH::DTB() {
float tb = 0;
tb = this->toan + this->van + this->anh;
tb = tb / 3.0;
return tb;
}
void HOCSINH::INRA() {
cout << "Hoc sinh: " << setw(10) << this->maso
<< setw(30) << this->hotendem
<< setw(15) << this->ten
<< setw(5) << this->tuoi
<< setw(8) << setprecision(2) << fixed << this->toan
<< setw(8) << setprecision(2) << fixed << this->van
<< setw(8) << setprecision(2) << fixed << this->anh
<< setw(8) << setprecision(2) << fixed << this->DTB() << endl;
}
class DSHOCSINH {
private:
int i = 0;
HOCSINH* ds = new HOCSINH[100];
void SAPXEP(bool sapxepgiamdan);
void XEPLOAI(int gioi, int kha, int tb, int kdat) {
cout << "Gioi: " << gioi
<< setw(20) << "Kha: " << kha
<< setw(20) << "Tb: " << tb
<< setw(20) << "Khong dat: " << kdat;
}
public:
void NHAP();
void INRA();
};
void DSHOCSINH::NHAP() {
char ok;
while (i < 100) {
ds[i].NHAP();
i++;
cout << "Co nhap tiep khong (C/K)?"; cin >> ok; cin.ignore();
if ((ok == 'k') || (ok == 'K')) {
break;
}
}
}
void DSHOCSINH::SAPXEP(bool sapxepgiamdan) {
int j1 = 0;
HOCSINH temp;
int j2 = 0;
for (j1 = 0; j1 < i; j1++) {
for (j2 = 0; j2 < i; j2++) {
if (sapxepgiamdan) {
if (ds[j1].getTen() < ds[j2].getTen()) {
temp = ds[j1];
ds[j1] = ds[j2];
ds[j2] = temp;
}
}
else {
if (ds[j1].getTen() > ds[j2].getTen()) {
temp = ds[j1];
ds[j1] = ds[j2];
ds[j2] = temp;
}
}
}
}
}
void DSHOCSINH::INRA() {
int gioi = 0, kha = 0, tb = 0, khongdat = 0;
this->SAPXEP(true);
for (int j = 0; j < i; j++) {
if (ds[j].DTB() >= 8.5) gioi++;
else if (ds[j].DTB() >= 7.0 && ds[j].DTB() < 8.5) kha++;
else if (ds[j].DTB() >= 5.0 && ds[j].DTB() < 7.0) tb++;
else khongdat++;
ds[j].INRA();
}
this->XEPLOAI(gioi, kha, tb, khongdat);
}
int main() {
DSHOCSINH hs = DSHOCSINH();
hs.NHAP();
hs.INRA();
}
* Có kiểm tra điểm nhập vào (0 <= điểm <= 10)
// HSBaiktso2.cpp : This file contains the 'main' function. Program execution begins and ends there.
// Doc tep ghi tep nhi phan
#include <iostream>
#include <iomanip>
using namespace std;
class HOCSINH {
private:
char maso[10], hotendem[30], ten[15];
int tuoi;
float toan, van, anh;
bool Kiemtranhapdiem(float diem) {
if ((diem >= 0) && (diem <= 10)) {
return true;
}
else {
cout << "Thong bao loi, chi duoc nhap gia tri: 0 <= "
<< "Gia tri nhap vao phai"
<< " <= 10" << endl;
return false;
}
}
public:
HOCSINH();
HOCSINH(string maso, string hotendem, string ten, int tuoi, float toan, float van, float anh);
void NHAP();
void INRA();
float DTB();
string getTen() { return this->ten; }
};
HOCSINH::HOCSINH() {
strcpy_s(this->maso, "");
strcpy_s(this->hotendem, "");
strcpy_s(this->ten, "");
this->tuoi = 0;
this->toan = 0;
this->van = 0;
this->anh = 0;
}
HOCSINH::HOCSINH(string maso, string hotendem, string ten, int tuoi, float toan, float van, float anh) {
strcpy_s(this->maso, maso.c_str());
strcpy_s(this->hotendem, hotendem.c_str());
strcpy_s(this->ten, ten.c_str());
this->tuoi = tuoi;
this->toan = toan;
this->van = van;
this->anh = anh;
}
void HOCSINH::NHAP() {
cout << "Ma so: "; cin.getline(this->maso, 10);
cout << "Ho va ten dem: "; cin.getline(this->hotendem, 30);
cout << "Ten: "; cin.getline(this->ten, 15);
cout << "Tuoi: "; cin >> tuoi;
do {
cout << "Diem toan: "; cin >> this->toan;
} while (!this->Kiemtranhapdiem(this->toan));
do {
cout << "Diem van: "; cin >> this->van;
} while (!this->Kiemtranhapdiem(this->van));
do {
cout << "Diem T. Anh: "; cin >> this->anh;
} while (!this->Kiemtranhapdiem(this->anh));
}
float HOCSINH::DTB() {
float tb = 0;
tb = this->toan + this->van + this->anh;
tb = tb / 3.0;
return tb;
}
void HOCSINH::INRA() {
cout << "Hoc sinh: " << setw(10) << this->maso
<< setw(30) << this->hotendem
<< setw(15) << this->ten
<< setw(5) << this->tuoi
<< setw(8) << setprecision(2) << fixed << this->toan
<< setw(8) << setprecision(2) << fixed << this->van
<< setw(8) << setprecision(2) << fixed << this->anh
<< setw(8) << setprecision(2) << fixed << this->DTB()
<< endl;
}
class DSHOCSINH {
private:
int i = 0;
HOCSINH* ds = new HOCSINH[100];
void SAPXEP(bool sapxepgiamdan);
void XEPLOAI(int gioi, int kha, int tb, int kdat) {
cout << "Gioi: " << gioi
<< setw(20) << "Kha: " << kha
<< setw(20) << "Tb: " << tb
<< setw(20) << "Khong dat: " << kdat;
}
public:
void NHAP();
void INRA();
};
void DSHOCSINH::NHAP() {
char ok;
while (i < 100) {
ds[i].NHAP();
i++;
cout << "Co nhap tiep khong (C/K)?"; cin >> ok; cin.ignore();
if ((ok == 'k') || (ok == 'K')) {
break;
}
}
}
void DSHOCSINH::SAPXEP(bool sapxepgiamdan) {
int j1 = 0;
HOCSINH temp;
int j2 = 0;
for (j1 = 0; j1 < i; j1++) {
for (j2 = 0; j2 < i; j2++) {
if (sapxepgiamdan) {
if (ds[j1].getTen() < ds[j2].getTen()) {
temp = ds[j1];
ds[j1] = ds[j2];
ds[j2] = temp;
}
}
else {
if (ds[j1].getTen() > ds[j2].getTen()) {
temp = ds[j1];
ds[j1] = ds[j2];
ds[j2] = temp;
}
}
}
}
}
void DSHOCSINH::INRA() {
int gioi = 0, kha = 0, tb = 0, khongdat = 0;
this->SAPXEP(true);
for (int j = 0; j < i; j++) {
if (ds[j].DTB() >= 8.5) {
gioi++;
}
else if ((ds[j].DTB() >= 7.0) && (ds[j].DTB() < 8.5)) {
kha++;
}
else if ((ds[j].DTB() >= 5.0) && (ds[j].DTB() < 7.0)) {
tb++;
}
else {
khongdat++;
}
ds[j].INRA();
}
this->XEPLOAI(gioi, kha, tb, khongdat);
}
int main() {
DSHOCSINH hs = DSHOCSINH();
hs.NHAP();
hs.INRA();
}