#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 ++) {//