【发布时间】:2019-11-21 16:19:58
【问题描述】:
所以我们被要求获取用户将要填写的向量的模式,它是一个双精度向量,到目前为止,我已经将它用于获取 1 模式,但是当涉及到更多我冻结了比 1 模式,有人有任何建议吗?(顺便说一句,我是编码初学者,所以不要烤)
void getMode(vector<double> v)
{
double element = 0;
int freq = 0;
for (int it = 0; it != v.size(); it++)
{
double tempElement = v[it];
int tempFreq = 0;
for (int i = 0; i < v.size(); i++)
if (v[i] == tempElement)
tempFreq++;
if (tempFreq > freq)
{
element = tempElement;
freq = tempFreq;
}
}
if(freq > 1 )
{
cout << "\nfreq: " << freq <<"\nElement: " << element;
}
else
{
cout << "\nno mode ";
}
}
假设用户输入 1,1,3,3,4,5 我的模式将只是数字 1 而不是 1 和 3,它基本上采用它找到的第一个模式并打印它而不是打印我得到的两种模式。
【问题讨论】:
-
把它变成我们可以编译的东西,我很确定你会在几分钟内得到答案。
-
Ted 试图告诉你的是学习和应用制作minimal reproducible example 的概念。 (@Ted,在以后的 cmets 中尝试输入
[mcve]。) -
另外请解释一下“我冻结”是什么意思。
-
为了完善它,请使用tour。
-
@Maad98 您如何使用铅笔和纸找到多种模式?您是否不需要将每个双打的计数存储在某处,完成后查看哪些双打并列最高计数?你的代码甚至接近这个概念吗?