1.t1.txt文件中保存某超市不同商品的销售情况,
读取文件中的数据,要求使用容器存放,
使用迭代器输出输出所有数据,
对获取到的数据按照销售额进行降序排序并输出
对降序后的数据存入到新的文本t2.txt中。
方法一:
int main() {
fstream ifile("t1.txt",ios::in);
if (!ifile.is_open()) {
cout << "文件打不开" << endl;
exit(0);
}
string s;
int num;
map<int, string, greater<int>> m;
map<int,string>::iterator mit;
while (ifile >> s) {
ifile >> num;
m[num] = s;
}
for (mit = m.begin(); mit != m.end(); mit++) {
cout << mit->second <<" "<< mit->first << endl;
}
fstream ofile("111.txt", ios::out);
for (mit = m.begin(); mit != m.end(); mit++) {
ofile << mit->second << " " << mit->first << endl;
}
}
方法二:
bool mysort(pair<string, int> &v1, pair<string, int> &v2) {
return v1.second < v2.second;
}
int main() {
ifstream ifile("t1.txt", ios::in);
if (!ifile.is_open()) {
cout << "文件打开le" << endl;
exit(0);
}
string s;
int num;
map<string, int> m;
map<string, int>::iterator mit;
while (ifile >> s) {
ifile >> num;
m[s] = num;
}
vector<pair<string, int>> v;
vector<pair<string, int>>::iterator vit;
v.assign(m.begin(), m.end());
//bool mysort(pair &v1, pair &v2);
sort(v.begin(), v.end(), mysort);
for (vit = v.begin(); vit != v.end();vit++) {
cout << vit->first << " " << vit->second << endl;
}
}
2.编程实现:给定一个排序数组,需要在原地删除重复出现的元素,
使得每个元素只出现一次,返回移出后数组的新长度。
要求使用vector, 删除重复元素后的数组元素不要使用新的数组空间,必须在原数组。
int main() {
//int a[] = { 2,4,12,9,81,72 ,82,4,6,90,12,9,72};
vector<int> v= { 2,4,12,9,81,72 ,82,4,6,90,12,9,72 };
vector<int>::iterator vit;
sort(v.begin(), v.end());
v.erase(unique(v.begin(), v.end()),v.end());
for (vit = v.begin(); vit != v.end(); vit++) {
cout << *vit<< " ";
}
cout << endl;
}
3.主函数输入3个工人的信息:工号(id),姓名(name),年龄(age),工资
(wages),使用函数模板实现求得最高工资并输出最高工资的工人信息,使用函 数模板实现升序排序,
使用函数模板实现输出工人所有信息
struct worker {
int id;
string name;
int age;
int wages;
};
template <class T>
void max_wages(T a[],int n) {
int max1=a[0].age;
int j=0;
for (int i = 0; i < n; i++) {
if (max1< a[i].age) {
max1 = a[i].age;
j = i;
}
}
cout << a[j].id<<" "<< a[j].name<<" "<< a[j].age<<" "<< a[j].wages << endl;
}
template <class T>
void sort(T a[],int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (a[j].age > a[j + 1].age) {
swap(a[j], a[j + 1]);
}
}
}
}
template <class T>
void show(T a[],int n) {
for (int i = 0; i < n; i++) {
cout << a[i].id<<a[i].name<<a[i].age<<a[i].wages << endl;
}
}
int main() {
worker w[3] = { {111,"张洋",20,3000},{4568,"王鹏",21,30000}, {4445,"张高新",21,50001} };
max_wages(w,3);
sort(w,3);
show(w, 3);
}
4.设计一个时间类
要求:
保护数据成员:时、分、秒
公有成员函数:
定义构造函数
定义输出函数,打印输出时间
定义运算符+的重载函数,实现两个时间的加法运算
运行效果参考如下:
请输入第一个时间的时、分 、秒:
8 20 4
请输入第二个时间的时、分 、秒:
13 50 30
两个时间相加:22时10分34秒
class time {
protected:
int hour;
int min;
int second;
public:
void show() {
second = second % 60;
min = min % 60+int(second/60);
hour = hour % 24+int(min/60);
cout << hour << " " << min << " " << second << endl;
}
time(int hour=0,int min=0,int second=0) {
this->hour = hour;
this->min = min;
this->second = second;
}
time operator+(time &t) {
time c;
c.hour = this->hour + t.hour;
c.min = this->min + t.min;
c.second = this->second + t.second;
return c;
}
};
int main() {
time t1(9, 20, 4);
time t2(13, 50, 30);
time t;
t = t1 + t2;
t.show();
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)