首先先放出实现代码!
#include <iostream>
#include <vector>
#include <time.h>
#include<algorithm>
#include <fstream>
#include"ostream"
#include<string.h>
using namespace std;
vector<int> v;
vector<int> a;
vector<int> b;
bool fun(const int &data)
{
return data%2==0;
}
int main()
{
srand((unsigned)time(NULL));
int i=0;
for( i = 0; i < 100; i++ )
{
v.push_back( rand()%100 );//把元素一个一个存入到vector中
}
cout<<"全部的数字"<<endl;
for( i = 0; i < v.size(); i++ )//v.size() 表示vector存入元素的个数
{
cout << v[ i ] << " "; //把每个元素显示出来
}
cout<<endl;
cout<<endl;
//计算能被2整除的数个数
int size3 =count_if(v.begin(),v.end(),fun);
cout << "计算能被2整除的数个数"<<size3<< endl;
for( i = 0; i <v.size(); i++ )//v.size() 表示vector存入元素的个数
{
if(i%2==0)
{
a.push_back(i );//把元素一个一个存入到vector中
}
else
{
b.push_back(i );//把元素一个一个存入到vector中
}
}
cout<<"a的数字"<<endl;
cout<<endl;
for( i = 0; i < a.size(); i++ )//v.size() 表示vector存入元素的个数
{
cout << a[ i ] << " "; //把每个元素显示出来
}
cout<<endl;
cout<<endl;
//排序后a的数字
cout<<"排序后a的数字"<<endl;
sort(a.begin(), a.end());
for(vector<int>::iterator it=a.begin(); it!=a.end(); it++){
cout<<*it<<" ";
}
cout<<endl;
cout<<endl;
cout<<"b的数字"<<endl;
cout<<endl;
for( i = 0; i < a.size(); i++ )//v.size() 表示vector存入元素的个数
{
cout << b[ i ] << " "; //把每个元素显示出来
}
//逆向排序:按照从大到小的顺序进行排序
//b的降序
cout<<endl;
cout<<endl;
//排序后b的数字
cout<<"排序后b的数字"<<endl;
sort(b.rbegin(), b.rend());
for(vector<int>::iterator it=b.begin(); it!=b.end(); it++){
cout<<*it<<" ";
}
cout<<endl;
//写文件
try{
ofstream out("./a.txt");
for(int n:a)
{
out<<n<<" ";
}
out.close();
ofstream outb("./b.txt");
for(int n:b)
{
outb<<n<<" ";
}
outb.close();
}catch(exception& e)
{
cout<<e.what()<<endl;
}
return 0;
}
下面是运行结果;
做题思路:
1.首先先定义三个容器a,b,v存放相应的数据。a存放的是偶数数据,b存放的是奇数数据。v存放的是100个随机数全部数据。
2.利用 STL库的count_if函数去奇数有多少个数据是能被2整除的。
3.利用for循环遍历v容器,满足被2整除的就写入a容器,否则写入b容器。
4.利用STL库的sort函数去对a,b容器的内容进行升序和降序
5.最后,利用枚举遍历方式。分别写入文件。