Untitled
unknown
plain_text
4 years ago
2.5 kB
14
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...