1. 案例一
获取数据,处理数据是工作中必不可少的,本题通过少量数据主要考察大家对STL容器和迭代器,排序算法,以及文件操作等相关知识。 编程实现以下功能: 1.t1.txt文件中保存某柜台一年中不同商品的销售情况, 2.读取文件中的数据,要求使用合适容器存放, 3.使用迭代器输出输出所有数据, 4.对获取到的数据按照销售额进行降序排序并输出 5.把排序后的销售额存放到t2.txt文件中。
方法一:
#include<iostream>
#include<vector>
#include<algorithm>
#include<fstream>
#include<string>
#include<map>
using namespace std;
int main() {
ifstream ifile("t1.txt", ios::in);
if (!ifile.is_open()) {
cout << "文件没有打开" << endl;
exit(0);
}
string b;
int num;
map<string,int> m;
map<string,int>::iterator mit;
while (ifile >> b) {
ifile >> num;
m[b] = num;
}
for (mit = m.begin(); mit != m.end(); mit++) {
cout << mit->first << " " << mit->second << endl;
}
cout << "******************************" << endl;
vector<pair<string, int>> vec;
vector<pair<string, int>>::iterator pit;
vec.assign(m.begin(), m.end());
bool mysort(pair<string, int > &v1, pair<string, int> &v2);
sort(vec.begin(), vec.end(), mysort);
for (pit = vec.begin(); pit != vec.end(); pit++) {
cout << pit->first <<" "<<pit->second<<" "<< endl;
}
ofstream ofile("t22.txt", ios::out);
for (pit = vec.begin(); pit != vec.end(); pit++) {
ofile << pit->second << " " << pit->first << endl;
}
}
bool mysort(pair < string, int > &v1, pair<string, int> &v2) {
return v1.second > v2.second;
}
方法二
#include<iostream>
#include<vector>
#include<algorithm>
#include<fstream>
#include<string>
#include<map>
using namespace std;
int main() {
ifstream ifile("t1.txt", ios::in);
if (!ifile.is_open()) {
cout << "文件没有打开" << endl;
exit(0);
}
map<int, string, greater<int>> m;
map<int, string>::iterator mit;
int a;
string str;
while (ifile >> str) {
ifile >> a;
m[a] =str;
}
for (mit = m.begin(); mit != m.end(); mit++) {
cout << mit->second << " " << mit->first << endl;
}
printf("**************************************");
ofstream ofile("t2.txt", ios::out);
for (mit = m.begin(); mit != m.end(); mit++) {
ofile<< mit->second << " " << mit->first << endl;
}
}
数据:
电脑 156975
手机 254132
彩电 521466
冰箱 254623
空调 345125
洗衣机 125948
风扇 231454
电饭锅 245695
2. 案例二
int main() {
ifstream ffile;
ffile.open("textfile.txt", ios::in);
if (!ffile.is_open()) {
cout << "没有打开文件" << endl;
exit(0);
}
cout << endl;
cout << "************vector输出统计城市次数没有去重**************" << endl;
string b;
vector<string> vec;
while (ffile >> b) {
vec.push_back(b);
}
vector<string>::iterator it;
sort(vec.begin(), vec.end(), greater<string>());
for (it = vec.begin(); it != vec.end(); it++) {
cout << *it << " " << count(vec.begin(), vec.end(), *it);
}
cout << endl;
cout << "************vector输出统计城市次数去重****************" << endl;
map<string, int> m;
map<string, int>::iterator mit;
int c;
for (it = vec.begin(); it != vec.end(); it++) {
c = count(vec.begin(), vec.end(), *it);
m[*it] = c;
}
for (mit = m.begin(); mit != m.end(); mit++) {
cout << mit->first << " " << mit->second << endl;
}
cout << "*******************文件存储******************" << endl;
ofstream ofile;
ofile.open("asdf.txt", ios::out);
for (mit= m.begin(); mit != m.end(); mit++) {
ofile << mit->first << mit->second<<endl;
}
ofile << "你好中国" << endl;
system("pause");
}
数据:
天津
广州
杭州
北京
三亚
苏州
武汉
西安
南京
厦门
深圳
海口
大连
温州
上海
天津
广州
杭州
北京
三亚
苏州
武汉
西安
三亚
苏州
武汉
西安
南京
厦门
深圳
海口
大连
温州
上海
海口
大连
温州
上海
天津
广州
杭州
北京
三亚
苏州
武汉
西安
三亚
苏州
武汉
西安
南京
厦门
深圳
海口
三亚
苏州
武汉
大连
温州
上海
天津
广州
杭州
北京
三亚
苏州
西安
三亚
苏州
|