例如:如果输入1,5,88,99,7作为输入,则在一组中插入1 5 88 99 7,然后按Enter键。 我的代码:
#include <bits/stdc++.h>
using namespace std;
set <char> num;
set <char> ::iterator i;
int main()
{
int a;
while(a=getchar())
{
if(a!='\n')
{
if(a!=',')
num.insert(a);
}
else
break;
}
for(i=num.begin(); i!=num.end(); i++)
cout<<*i<<endl;
}
我得到的输出: 1 五 7 8 9
答案 0 :(得分:-2)
#include <set>
#include <string>
#include <sstream>
using namespace std;
int main() {
// cin >> s;
string s = "5,2,3,4,1",t = "";
stringstream ss(s);
set<int> s_;
while( getline(ss,t,',') )
s_.insert(stoi(t));
for(auto i : s_)
cout << i << " ";
}
输出:1 2 3 4 5
答案 1 :(得分:-2)
1)要匹配修改后的问题(读取任意长度的整数)char by char,意味着你需要查看每个问题并查看它是否为数字。如果是,则需要根据收到的每个附加数字保持运行值。
2)如果要保存实际的整数值,你的集合必须是int,而不是char。
#include <iostream>
#include <set>
using namespace std;
set <int> num;
set <int> ::iterator i;
int main()
{
int a;
int full_num=0;
while(a=getchar())
{
if (isdigit(a))
{
full_num = full_num*10 + (a - '0');
}
else if (a==',' || a=='\n')
{
num.insert(full_num);
full_num = 0;
if (a=='\n') break;
}
}
for(i=num.begin(); i!=num.end(); i++)
cout<<*i<<endl;
}