Input: 30 30 30 40 40 50 50 4 4 4 4
output: 3 30 2 40 2 50 4 4
我必须接受这些整数,并显示每个唯一数字的计数以及该计数旁边的数字。
老实说,我不知道要给出什么条件才能只接受输入的最后一个整数4而不接受无限或某些垃圾值。因为所有测试用例都没有相同数量的值作为输入。请说明仅接受有限数量的整数时需要使用什么函数/逻辑。
我使用了一个for循环,该循环接受和存储向量中的值99次,因为这个问题说我可以接受的最大整数数是99。但是对于上述测试用例,接受了11个必需的整数,并且其余87个是垃圾/最后一个整数值...
已接受30 30 30 40 40 50 50 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 .........(直到第99个循环)
(如果可能的话,我会附上我做过的屏幕截图。我之所以没有这样做,是因为,1)我被要求在比赛中编写代码,所以我不记得我们当时的确切问题了。不允许随身携带粗糙的床单。 2)我无法做出体面的尝试来解决它,因为我什至不知道如何在不接受垃圾值的情况下接受整数。对不起,不确定性!)
答案 0 :(得分:1)
您可以读取字符串中的数字,然后使用标题std::istringstream
中声明的标准字符串流<sstream>
从字符串中提取每个数字。
这是一个演示程序。
#include <iostream>
#include <string>
#include <map>
#include <sstream>
int main()
{
std::string input;
std::cout << "input: ";
std::getline( std::cin, input, '\n' );
std::map<int, size_t> m;
int value;
for ( std::istringstream is( input ); is >> value; )
{
++m[value];
}
std::cout << "output: ";
for ( const auto &p : m ) std::cout << p.first << ' ' << p.second << ' ';
std::cout << '\n';
}
其输出为
input: 30 30 30 40 40 50 50 4 4 4 4
output: 4 4 30 3 40 2 50 2