问题描述:
Read the datasets and write them into cout in the following order:
first by dataset (first a, then b) and then by value. Example:
input: a 3 b 2 b 1 a 1 a 4 b 2
output: 1 3 4 1 2 2
我的代码:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> a; //将vector a, b 定义为全局变量,因为之后要用
vector<int> b;
void assignGroup(char groupName, int x){
vector<int> a1; //定义两个局部变量,接收用户输入的数x
vector<int> b1;
switch(groupName){
case 'a': //若输入a x, 则x放入vector a1
a1.push_back(x);
break;
case 'b': //若输入b x, 则x放入vector b1
b1.push_back(x);
break;
default:
break;
}
a=a1; //将a1,b1 赋给全局变量a,b
b=b1;
}
void displaya(){
sort(a.begin(),a.end()); //vector a 中的元素以从小到大的顺序排列
for (auto e : a){ //输出vector a 中的元素
cout<<e<<" ";
}
}
void displayb(){
sort(b.begin(),b.end()); //vector b 中的元素以从小到大的顺序排列
for (auto e : b){ //输出vector b 中的元素
cout<<e<<" ";
}
}
int main(){
char groupName;
int x;
while (true){
cin>>groupName; //输入例如 a 3 a 2 b 1 a 4....
cin>>x;
if (cin.fail()){
break;
}
assignGroup(groupName,x);//先将数字分成ab两组
displaya(); //输出排列好的a b
displayb();
}
return 0;
}
输入:a 3 b 2 b 1 a 1 a 4 b 2
正确输出:1 3 4 1 2 2
我的输出:3 2 1 1 4 2
看上去既没有分组也没有排序。。。
Thank you for your time:)