集合运算

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值