#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sstream>
#include<cstdio>
#include<iostream>
#include<math.h>
#include <map>
#include <vector>
#include <algorithm>
#define M 10
using namespacestd;
int main(){
string a,b,c,d,temp;
vector<string> numa;//上課的學生
vector<string> numb;//男生
vector<string> numc;//女生
vector<string> numd;//考試合格
vector<string> ::iterator it;
cout<<"請輸入上課的學生學號,空格分割:"<<endl;
getline(cin,a);
cout<<"請輸入男生學號,空格分割:"<<endl;
getline(cin,b);
cout<<"請輸入女生學號,空格分割:"<<endl;
getline(cin,c);
cout<<"請輸入考試合格的學生學號,空格分割:"<<endl;
getline(cin,d);
istringstream record(a);
while(record >> temp){
numa.push_back(temp);
}
istringstream recordb(b);
while(recordb >> temp){
numb.push_back(temp);
}
istringstream recordc(c);
while(recordc >> temp){
numc.push_back(temp);
}
istringstream recordd(b);
while(recordd >> temp){
numd.push_back(temp);
}
///////////
unsignedlong size = numb.size();
for(int i =0; i < size; i ++) {
if(numb.empty() ==1) break; //1️⃣注意:如果不加這個判斷。當已經是空的時候還會繼續減小。就會出錯
it = find(numa.begin(), numa.end(), numb[i]);
if(it != numa.end()){
numb.erase(numb.begin()+i);
i--;
}
}
cout<<"沒來上課的男生的學號:"<<endl;
for(vector<string>::const_iterator iter = numb.begin(); iter != numb.end(); ++iter) {
cout << *iter <<endl;
}
//////////
size = numc.size();
for(int i =0; i < size; i ++) {
if(numc.empty() ==1) break;//1️⃣注意:如果不加這個判斷。當已經是空的時候還會繼續減小。就會出錯
it = find(numd.begin(), numd.end(), numc[i]);
if(it != numd.end()){
numc.erase(numc.begin()+i);
i--;
}
}
cout<<"考試不合格的女生的學號:"<<endl;
for(vector<string>::const_iterator m = numc.begin(); m != numc.end(); ++m) {
cout << *m <<endl;
}
///////
size = numb.size();
for(int i =0; i < size; i ++) {
if(numb.empty() ==1) break;//1️⃣注意:如果不加這個判斷。當已經是空的時候還會繼續減小。就會出錯
it = find(numd.begin(), numd.end(), numb[i]);
if(it != numd.end()){
numb.erase(numb.begin()+i);
i--;
}
}
cout<<"沒來上課且考試不及格的男生的學號:"<<endl;
for(vector<string>::const_iterator gg = numb.begin(); gg != numb.end(); ++gg) {
cout << *gg <<endl;
}
return0;
}
/*
請輸入上課的學生學號,空格分割:
1 2 3 4 5
請輸入男生學號,空格分割:
1 2 7 8 9
請輸入女生學號,空格分割:
3 4 5 11 14 44
請輸入考試合格的學生學號,空格分割:
1 3 4 11 14
1 2 3 4 5
1 2 7 8 9
3 4 5 11 14 44
1 3 4 11 14
*/
改進
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sstream>
#include<cstdio>
#include<iostream>
#include<math.h>
#include <map>
#include <vector>
#include <algorithm>
#define M 10
using namespace std;
int main(){
string a,b,c,d,temp;
vector<string> numa;//上課的學生
vector<string> numb;//男生
vector<string> numc;//女生
vector<string> numd;//考試合格
vector<string> ::iterator it;
cout<<"請輸入上課的學生學號,空格分割:"<<endl;
getline(cin,a);
cout<<"請輸入男生學號,空格分割:"<<endl;
getline(cin,b);
cout<<"請輸入女生學號,空格分割:"<<endl;
getline(cin,c);
cout<<"請輸入考試合格的學生學號,空格分割:"<<endl;
getline(cin,d);
istringstream record(a);
while(record >> temp){
numa.push_back(temp);
}
istringstream recordb(b);
while(recordb >> temp){
numb.push_back(temp);
}
istringstream recordc(c);
while(recordc >> temp){
numc.push_back(temp);
}
istringstream recordd(d);
while(recordd >> temp){
numd.push_back(temp);
}
///////////
for(int i =0; i < numb.size(); i ++) {//