Untitled

 avatar
unknown
c_cpp
10 months ago
17 kB
2
Indexable
#include<bits/stdc++.h>
#define ll long long
using namespace std;
//Bai 1, 2 : Rut gon 2 phan so, lam theo ham main co san, Bai 2 : tinh toan cong tru 2 phan so
//-----------------------------------------------------------------------------//
class PhanSo{
	private: 
		int tu, mau;
	public:
		PhanSo(int tu, int mau); // constructor : do trong main PhanSo p(1, 1);
		void rutgon();
		friend istream& operator >> (istream &in, PhanSo &a);
        friend ostream& operator << (ostream &out, PhanSo a);
        // Nap chong toan tu + bang member PhanSo
        PhanSo operator + (PhanSo another);
        // Nap chong toan tu - su dung friend
        friend PhanSo operator - (PhanSo, PhanSo);
};

PhanSo::PhanSo(int a, int b){
	this->tu = a;
	this->mau = b;
} 

istream& operator >> (istream& in, PhanSo &a){
    in >> a.tu >> a.mau;
    return in;
}

ostream& operator << (ostream& out, PhanSo a){
    out << a.tu << "/" << a.mau << endl;
    return out;
}

int gcd(int a, int b){
	if(b == 0) return a;
	return gcd(b, a % b);
}

int lcm(int a, int b){
	return a / gcd(a, b) * b;
}
void PhanSo::rutgon(){
	int chung = gcd(this->tu, this->mau);
	this->tu /= chung;
	this->mau /= chung;
}
// Ham main bai 1
//int main(){
//	PhanSo p(1, 1); // Khai bao 1 phan so bang constructor co 2 tham so (1, 1)
//	cin >> p;
//	p.rutgon();
//	cout << p;
//	return 0;
//}
//--------------------------------------------------------------------------------//

PhanSo PhanSo::operator + (PhanSo another){
	PhanSo tong(1, 1);// phai khai bao PhanSo tong nhu nay vi cai constructor ban dau minh no phai gan gia tri
	int mauChung = lcm(this->mau, another.mau);
	tong.tu = (mauChung / this->mau) * this->tu + (mauChung / another.mau) * another.tu;
	tong.mau = mauChung;
	tong.rutgon();
	return tong;
}

PhanSo operator - (PhanSo a, PhanSo b){
	PhanSo hieu(1, 1);
	int mauChung = lcm(a.mau, b.mau);
	hieu.mau = mauChung;
	hieu.tu = a.tu * (mauChung / a.mau) - b.tu * (mauChung / b.mau);
	hieu.rutgon();
	return hieu;
}
//Ham main bai 2
//int main(){
//	PhanSo p(1, 1), q(1, 1);
//	cin >> p >> q;
//	cout << p - q << p + q << endl;
//}
//-----------------------------------------------------------------------------//

//Bai 3 : 
class SinhVien{
	private:
		string maSV, ten, lop, ngaySinh;
		double gpa;
	public:
		SinhVien();
		friend void nhap(SinhVien &);
		friend void in(SinhVien);
		//--------------------------
		//Bai 4 :
		friend istream& operator >> (istream&, SinhVien &);
		friend ostream& operator << (ostream&, SinhVien);
		
};


SinhVien::SinhVien(){
	this->ten = this->lop = this->ngaySinh = "";
	this->gpa = 0;
}

void chuanHoaNgaySinh(string &s){
	if(s[1] == '/') s = "0" + s;
	if(s[4] == '/'){
		s.insert(3, "0");
	}
}
void nhap(SinhVien &a){
	a.maSV = "23736931";
	getline(cin, a.ten);
	cin >> a.lop >> a.ngaySinh >> a.gpa;
	chuanHoaNgaySinh(a.ngaySinh);
}

void in(SinhVien a){
	cout << a.maSV << " " << a.ten << " " << a.ngaySinh << " " << a.lop << " " << fixed << setprecision(2) << a.gpa << endl;
}

#define a() a
// Ham main bai 3
// ngay sinh duoc chuan hoa dang dd/mm/yyyy
/*
int main(){
	SinhVien a(); // SinhVien a
	nhap(a); // Chu y : 2 cai ham nhap va in khong phai la 2 member cua class SinhVien
	in(a); // Neu la member thi dung a.nhap(), a.in() || Con nhu nay thi minh cu khoi tao ham voi nhuw bth hay lam thoi
	return 0;
}
*/
//------------------------------------------------------------------------------------
//Bai 4 thi cung y vay nhung yeu cau nap chong toan tu cin vs cout

istream& operator >> (istream& in, SinhVien &a){
	a.maSV = "23736931";
	getline(in, a.ten);
	in >> a.lop >> a.ngaySinh >> a.gpa;
	if(a.ngaySinh[2] != '/') a.ngaySinh = "0" + a.ngaySinh;
	if(a.ngaySinh[5] != '/') a.ngaySinh.insert(3, "0");
	return in;
}

ostream& operator << (ostream& out, SinhVien a){
	out << a.maSV << " " << a.ten << " " << a.ngaySinh << " " << a.lop << " " << fixed << setprecision(2) << a.gpa << endl;
	return out;
}
/*
int main(){
	SinhVien a();
	cin >> a;
	cout << a;
	return 0;
}
*/
// Bai 5 : Hay nhap danh sach sinh vien gom maSv, Ten, Lop, Email
// Sap xep ds sinh vien theo lop, tang dan (theo thu tu tu dien)
/*
4
B16DCCN011
Nguyen Trong Duc Anh
D16CNPM1
sv1@stu.ptit.edu.vn
B15DCCN215
To Ngoc Hieu
D15CNPM3
sv2@stu.ptit.edu.vn
D15DCKT150
Nguyen Ngoc Son
D15CQKT02-B
sv3@stu.ptit.edu.vn
B15DCKT199
Nguyen Trong Tung
D15CQKT03-B
sv4@stu.ptit.edu.vn
*/
/*
-------------------------------------------------------------
B15DCCN215 To Ngoc Hieu D15CNPM3 sv2@stu.ptit.edu.vn
-------------------------------------------------------------
D15DCKT150 Nguyen Ngoc Son D15CQKT02-B sv3@stu.ptit.edu.vn
-------------------------------------------------------------
B15DCKT199 Nguyen Trong Tung D15CQKT03-B sv4@stu.ptit.edu.vn
-------------------------------------------------------------
B16DCCN011 Nguyen Trong Duc Anh D16CNPM1 sv1@stu.ptit.edu.vn
*/
class SinhVien1{
	private: 
		string maSv, ten, lop, email;
	public:
		SinhVien1(){
			this->maSv = this->ten = this->lop = this->email = "";
		}
		friend istream& operator >> (istream&, SinhVien1 &);
		friend ostream& operator << (ostream&, SinhVien1);
		string getLop();
		string getMaSv(){
			return this->maSv;
		}
		// Cach 2 : minh chi can nop chong cai toan tu < thoi, xong vo main : sort(a, a + n)
//		bool operator < (SinhVien1 another){
//			return this->lop < another.lop;
//		}
		// sap xep sinh vien theo ma
		bool operator < (SinhVien1 another){
			return this->maSv < another.maSv;
		}
		
};

istream& operator >> (istream& in, SinhVien1 &a){
	in >> a.maSv; in.ignore();
	getline(in, a.ten);
	in >> a.lop >> a.email;
	return in;
}

ostream& operator << (ostream& out, SinhVien1 a){
	out << "-------------------------------------------------------------\n";
	out << a.maSv << " " << a.ten << " " << a.lop << " " << a.email << endl;
	return out;
}
void nhapSV(SinhVien1 a[], int n){
	for(int i = 0; i < n; i++){
		cin >> a[i];
	}
}

void inSV(SinhVien1 a[], int n){
	for(int i = 0; i < n; i++){
		cout << a[i];
	}
}
string SinhVien1::getLop(){
	return this->lop;
}

bool cmp(SinhVien1 a, SinhVien1 b){
	return a.getLop() < b.getLop();
}
// Ham main bai 5 
/*
int main(){
	#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
	#endif
	int n; cin >> n;
	SinhVien1 a[n];
	nhapSV(a, n);
	sort(a, a + n, cmp);
	inSV(a, n);
	return 0;
}
*/
//-------------------------------------------------------------------
// Bai 6 : Sap xep sinh vien theo ma so sv
// input no khac, bo cai so luong sinh vien di
/*
int main(){
	#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
	#endif
	vector<SinhVien1> v;
	SinhVien1 tmp;
	while(cin >> tmp){
		v.push_back(tmp);
	}
	sort(v.begin(), v.end());
	for(int i = 0; i < v.size(); i++){
		cout << v[i];
	}
	return 0;
}
*/
//--------------------------------------------------------
//Bai 7 : Nhap danh sach sinh vien, xong moi truy van, nhap vo 1 lop, xong xuat ra man hinh 
//cac sinh vien thuoc lop do
/*
int main(){
	#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
	#endif
	int n; cin >> n;
	SinhVien1 a[n];
	for(int i = 0; i < n; i++){
		cin >> a[i];
	}
	int q; cin >> q;
	while(q--){
		string lopCanTim; cin >> lopCanTim;
		cout << "DANH SACH SINH VIEN LOP : " << lopCanTim << endl;
		for(int i = 0; i < n; i++){
			if(a[i].getLop() == lopCanTim){
				cout << a[i];
			}
		}
	}
	return 0;
}
4
B16DCCN011
Nguyen Trong Duc Anh
D16CNPM1
sv1@stu.ptit.edu.vn
B15DCCN215
To Ngoc Hieu
D15CNPM3
sv2@stu.ptit.edu.vn
B15DCKT150
Nguyen Ngoc Son
D15CQKT02-B
sv3@stu.ptit.edu.vn
B15DCKT199
Nguyen Trong Tung
D15CQKT02-B
sv4@stu.ptit.edu.vn
1
D15CQKT02-B
*/
//---------------------------------------------------------------------------
// Bai 8 : Tim sinh vien thuoc khoa nao do
//B16DCCN011 : B16 la khoa 2016
//D15CQKT02-B : Khoa 2015
/*
4
B16DCCN011
Nguyen Trong Duc Anh
D16CNPM1
sv1@stu.ptit.edu.vn
B15DCCN215
To Ngoc Hieu
D15CNPM3
sv2@stu.ptit.edu.vn
B15DCKT150
Nguyen Ngoc Son
D15CQKT02-B
sv3@stu.ptit.edu.vn
B15DCKT199
Nguyen Trong Tung
D15CQKT02-B
sv4@stu.ptit.edu.vn
1
2015
*/
// Ham main bai 8
/*
int main(){
	#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
	#endif
	int n; cin >> n;
	SinhVien1 a[n];
	for(int i = 0; i < n; i++){
		cin >> a[i];
	}
	int q; cin >> q;
	while(q--){
		string s; cin >> s;
		cout << "DANH SACH SINH VIEN KHOA : " << s << endl;
		for(int i = 0; i < n; i++){
			if(a[i].getLop()[1] == s[2] && a[i].getLop()[2] == s[3]){
				cout << a[i];
			}
		}
	}
	return 0;
}
*/
//--------------------------------------------------------------------------
// Bai 9 : Liet ke sinh vien theo nganh, chu E la sunh vien he clc
// DCKT : Ke toan
// DCCN : Cong Nghe Thong Tin - Tru di cac sinh vien lop bat dau bang chu E
// DCAT : An Toan Thong Tin - Tru di cac sinh vien lop bat dau bang chu E
// DCVT : Dien Tu Vien Thong
// DCDT : Dien Tu

void vietHoa(string &s){
	for(int i = 0; i < s.length(); i++){
		s[i] = toupper(s[i]);
	}
}

string convert(string s){
	string res = "";
	res += toupper(s[0]);
	for(int i = 1; i < s.length(); i++){
		if(s[i] != ' ' && s[i - 1] == ' '){
			res += toupper(s[i]);
			return res;
		}
	}
	return res;
}
/*
int main(){
	#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
	#endif
	int n; cin >> n;
	map<string, vector<SinhVien1>> mp;
	for(int i = 0; i < n; i++){
		SinhVien1 tmp; cin >> tmp;
		mp[tmp.getMaSv().substr(5, 2)].push_back(tmp);
	}
	int q; cin >> q;
	cin.ignore();
	while(q--){
		string s; getline(cin, s);
		vietHoa(s);
		cout << "DANH SACH SINH VIEN NGANH : " << s << endl;
		string nganh = convert(s);
		if(nganh == "AT" || nganh == "CN"){
			for(SinhVien1 x : mp[nganh]){
				if(x.getMaSv().find("E") != string::npos){ // Neu khong tim thay chu E thi no tra ve string::npos
					cout << x;
				}
			}
		}
		else{
			for(SinhVien1 x : mp[nganh]){
				cout << x;
			}
		}
	}
	return 0;
}
4
B16DCCN011
Nguyen Trong Duc Anh
D16CNPM1
sv1@stu.ptit.edu.vn
B15DCCN215
To Ngoc Hieu
D15CNPM3
sv2@stu.ptit.edu.vn
B15DCKT150
Nguyen Ngoc Son
D15CQKT02-B
sv3@stu.ptit.edu.vn
B15DCKT199
Nguyen Trong Tung
D15CQKT02-B
sv4@stu.ptit.edu.vn
1
Ke toan
//--------------------out-----------------------------------
DANH SACH SINH VIEN NGANH : KE TOAN
-------------------------------------------------------------
B15DCKT150 Nguyen Ngoc Son D15CQKT02-B sv3@stu.ptit.edu.vn
-------------------------------------------------------------
B15DCKT199 Nguyen Trong Tung D15CQKT02-B sv4@stu.ptit.edu.vn
*/

//-------------------------------------------------------------------
/*
Bai 10 : Danh sach doanh nghiep nhan sinh vien thuc tap
Hay sap xep cac doanh nghiep theo so luong sinh vien co the nhan giam dan
Output : Ghi ra danh sach da duoc sap xep so luong giam dan. Trong truong hop cung so luong
thi sap xep theo ma doanh nghiep(thu tu tu dien tang dan)
*/
class DoanhNghiep{
	private:
		string maDoanhNghiep, tenDoanhNghiep;
		int soSinhVien;
	public:
		void nhap();
		void xuat();
		int getSoLuongSinhVien(){
			return this->soSinhVien;
		}
		string getMaDoanhNghiep(){
			return this->maDoanhNghiep;
		}
};

void DoanhNghiep::nhap(){
	cin >> this->maDoanhNghiep;
	cin.ignore();
	getline(cin, this->tenDoanhNghiep);
	cin >> soSinhVien;
}

void DoanhNghiep::xuat(){
	cout << "--------------------------------------\n";
	cout << this->maDoanhNghiep << "\n" << this->tenDoanhNghiep << "\n" << this->soSinhVien << endl;
}

bool cmp1(DoanhNghiep a, DoanhNghiep b){
	if(a.getSoLuongSinhVien() == b.getSoLuongSinhVien()){
		return a.getMaDoanhNghiep() < b.getMaDoanhNghiep();
	}
	return a.getSoLuongSinhVien() > b.getSoLuongSinhVien();
}

/*
int main(){
	#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
	#endif
	int n; cin >> n;
	DoanhNghiep b[n];
	for(int i = 0; i < n; i++){
		b[i].nhap();
	}
	sort(b, b + n, cmp1);
	for(int i = 0; i < n; i++){
		b[i].xuat();
	}
	return 0;
}
*/
//-----------------------------------------------------------------------
/*
Bai 12: 
Khai bao 1 cai class NhanVien
Sap xep nhan vien theo do tuoi tu gia den tre
mm/dd/yyyy
ma nhan vien thi duoc danh so theo thu tu nhap vao, vd : 00001 00002 tang dan len
*/


class NhanVien{
	private:
		string maNhanVien, hoTen, gioiTinh, ngaySinh, diaChi, maSoThue, ngayKiHopDong;
	
	public:
		NhanVien();
		static int cnt;
		friend istream& operator >> (istream &in, NhanVien &);
	    friend ostream& operator << (ostream &out, NhanVien ); 
	    friend bool operator < (NhanVien a, NhanVien b){
	    	string s1 = a.ngaySinh, s2 = b.ngaySinh;
			int ngayA = (s1[0] - '0') * 10 + (s1[1] - '0'), thangA = (s1[3] - '0') * 10 + (s1[4] - '0'), namA = stoi(s1.substr(6));
			int ngayB = (s2[0] - '0') * 10 + (s2[1] - '0'), thangB = (s2[3] - '0') * 10 + (s2[4] - '0'), namB = stoi(s2.substr(6));
			if(namA != namB){
				return namA < namB;
			}
			if(thangA != thangB){
				return thangA < thangB;
			}
			return ngayA < ngayB;
		}
		int getCnt(){
			return this->cnt;
		}
};

NhanVien::NhanVien(){
	maNhanVien = hoTen = gioiTinh = ngaySinh = diaChi = maSoThue = ngayKiHopDong = "";
}

int NhanVien::cnt = 0;

istream& operator >> (istream& in, NhanVien &a){
	NhanVien::cnt++;
	a.maNhanVien = string(5 - to_string(NhanVien::cnt).length(), '0') + to_string(NhanVien::cnt);
	in.ignore();
	getline(in, a.hoTen);
    in >> a.gioiTinh >> a.ngaySinh;
    in.ignore();
	getline(in,a.diaChi);
	in >> a.maSoThue >> a.ngayKiHopDong;
    return in;
}

ostream& operator << (ostream& out, NhanVien a){
	// hoac nay dung bien maNhanVien la int thi : 
	// out << setfill('0') << setw(5) << a.maNhanVien
	out << a.maNhanVien << " | " << a.hoTen << " | " << a.gioiTinh << " | " << a.ngaySinh << " | " << a.diaChi << " | " << a.maSoThue << " | " << a.ngayKiHopDong << endl;
    return out;
}

void sapxep(NhanVien a[], int n){
	sort(a, a + n);
}


#define a() a
/*
int main(){
	#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
	#endif
	NhanVien a[50];
	int n; cin >> n;
	for(int i = 0; i < n; i++){
		cin >> a[i];
	}
	sapxep(a, n);
	for(int i = 0; i < n; i++){
		cout << a[i];
	}
	
	return 0;
}
4
Nguyen Van A
Nam
10/22/1982
Mo Lao-Ha Dong-Ha Noi
8333012345
31/12/2023
Ly Thi B
Nu
10/15/1988
Quang Nam
83330123456
22/08/2011
Hoang Thi C
Nu
04/02/1981
Gia Lai
833301234567
22/08/2011
Bui Trung Kien
Nam
03/03/2005
Quang Ngai
051205007969
03/03/2030
*/

//-----------------------------------------------------------
/*
Bai 18 : Sap xep giang vien theo ten, cung ten thi sap xep theo ma
In : 
3
Nguyen Manh Son
Cong nghe phan mem
Vu Hoai Nam
Khoa hoc may tinh
Dang Minh Tuan
An toan thong tin

Out :
GV02 Vu Hoai Nam KHMT
GV01 Nguyen Manh Son CNPM
GV03 Dang Minh Tuan ATTT
*/
string chuanHoaLop(string s){
	string res = "";
	stringstream ss(s);
	string token;
	while(ss >> token){
		res += toupper(token[0]);
	}
	return res;
}

string chuanTen(string s){
	string res;
	stringstream ss(s);
	string token;
	while(ss >> token){
		res = token;
	}
	return res;
}
class GiangVien{
	private:
		string maGV, tenGiangVien, boMon;
	public:
		static int dem;
		friend istream& operator >> (istream &in, GiangVien &a){
			++dem;
			string s = to_string(dem);
			if(s.length() < 2) s = "0" + s;
			a.maGV = "GV" + s;
			getline(in, a.tenGiangVien);
			getline(in, a.boMon);
			a.boMon = chuanHoaLop(a.boMon);
			return in;
		}
	    friend ostream& operator << (ostream &out, GiangVien a){
	    	out << a.maGV << " " << a.tenGiangVien << " " << a.boMon << endl;
	    	return out;
		}
	    friend bool operator < (GiangVien a, GiangVien b){
	    	string tenA = chuanTen(a.tenGiangVien), tenB = chuanTen(b.tenGiangVien);
	    	if(tenA != tenB){
	    		return tenA < tenB;
			}
			return a.maGV < b.maGV;
		}
		string getLop(){
			return this->boMon;
		}
};


int GiangVien::dem = 0;


int main(){
	#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
	#endif
	GiangVien a[50];
	int n; cin >> n; cin.ignore();
	for(int i = 0; i < n; i++){
		cin >> a[i];
	}
	int q; cin >> q;
	cin.ignore();
	while(q--){
		string s; getline(cin, s);
		s = chuanHoaLop(s);
		cout << "DANH SACH GIANG VIEN BO MOM : " << s << endl;
		for(int i = 0; i < n; i++){
			if(s == a[i].getLop()){
				cout << a[i];
			}
		}
	}

	return 0;
}


Editor is loading...
Leave a Comment