Untitled

 avatar
unknown
plain_text
3 years ago
2.5 kB
7
Indexable
#include<iostream>
#include<string>
#include<stdio.h>
using namespace std;
class sinhVien
{
	private:
		string ma;
		string ten;
		string lop;
		string email;
		string nganhHoc;
		bool trangThai;
	public:
		friend istream& operator >> (istream &is, sinhVien &a);
		friend bool getNganh(sinhVien &a);
		friend string Nganh(sinhVien a);
		friend void thayDoi(sinhVien &a);
		friend void print(sinhVien a);
		sinhVien()
		{
			trangThai = false;
		}
		
};

class nganh
{
	private:
		string tenNganh;
		sinhVien sv[1000];
		int sl;
	public:
		friend void add(sinhVien &a, nganh &b);
		friend istream& operator >> (istream &is, nganh &b);
		friend ostream& operator << (ostream & os, nganh &b);
		friend string layTen(nganh b);
		nganh()
		{
			sl = 0;
		}
		
};

istream& operator >> (istream &is, sinhVien &a)
{
	is>>a.ma;
	scanf("\n");
	getline(cin, a.ten);
    is>>a.lop>>a.email;
	string tmp = a.ma.substr(3,4);
	if(tmp == "DCKT")
	{
		a.nganhHoc = "Ke toan";
	}
	else if(tmp == "DCCN" && a.lop[0] != 'E')
	{
		a.nganhHoc = "Cong nghe thong tin";
	}
	else if(tmp == "DCAT" && a.lop[0] != 'E')
	{
		a.nganhHoc = "An toan thong tin";
	}
	else if(tmp == "DCVT")
	{
		a.nganhHoc = "Vien thong";
	}
	else if(tmp == "DCDT")
	{
		a.nganhHoc = "Dien tu";
	}
	return is;
}

istream& operator >> (istream &is, nganh &b)
{
	getline(cin, b.tenNganh);
	return is;
}

bool getNganh(sinhVien &a)
{
	return a.trangThai;
}

string Nganh(sinhVien a)
{
	return a.nganhHoc;
}

void thayDoi(sinhVien &a)
{
	 a.trangThai = true;
}

void add(sinhVien &a, nganh &b)
{
	 string tmp = Nganh(a);
	 if(b.tenNganh == tmp)
	 {
	 	b.sv[b.sl] = a;
	 	b.sl++;
	 	thayDoi(a);
	 }
}

string layTen(nganh b)
{
	return b.tenNganh;
}

void print(sinhVien a)
{
	 cout<<a.ma<<" ";
	 cout<<a.ten<<" ";
	 cout<<a.lop<<" ";
	 cout<<a.email<<" ";
}

ostream& operator << (ostream & os, nganh &b)
{
	os<<"DANH SACH SINH VIEN NGANH ";
	string tmp = layTen(b);
	for(int i = 0 ; i < tmp.length() ;i ++)
	{
		if('a' <= tmp[i] && tmp[i] <= 'z')
		{
			tmp[i] -= 32;
		}
	}
	os<<tmp<<":\n";
	for(int i = 0 ; i < b.sl ; i++)
	{
		print(b.sv[i]);
		os<<"\n";
	}
	return os;
}

int main()
{
	int n;cin>>n;
	sinhVien a[n];
	for(int i = 0; i < n;i++)
	{
		cin>>a[i];
	}
	int q;cin>>q;
	scanf("\n");
	nganh k[q];
	for(int i = 0 ; i < q ; i++)
	{
		cin >> k[i]; 
	}
	for(int i = 0 ; i < q;i++)
	{
		for(int j = 0 ; j < n ; j++)
		{
			if(!getNganh(a[j]))
			{
				add(a[j],k[i]);
			}
		}
	}
	for(int i = 0 ; i < q ; i++)
	{
		cout<<k[i];
	}
	return 0;
}
Editor is loading...