集合運算

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

發佈了50 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章