gpt4 book ai didi

c - 在 LCD 显示屏上打印前三个重复元素

转载 作者:行者123 更新时间:2023-11-30 14:56:52 25 4
gpt4 key购买 nike

我有一个数组,其输入是由用户使用键盘给出的。所有输入都存储在名为 storeKeys 的数组中。数组的索引由变量storeKeysIndex保存,初始化为0,当按下一个键时,按下的键的值存储在storeKeys数组中,并且storeKeysIndex 递增。让 storeKeys 具有值

storeKeys = {3,2,5,7,1,1,9,9,9,1,3,1};

我希望液晶显示器显示数组中前三个重复的元素。在上面的数组中,lcd 应显示 1,9,3,因为值“1”在上面的数组中重复四次,“9”重复三次,“3”重复两次。其他值不应由 lcd 显示。

我尝试计算每个元素的频率并将频率存储在数组freq中。我可以在串行监视器中显示每个元素的频率。但我不知道如何在液晶显示屏(或串行监视器)上显示前三个重复的数字。这是代码:

for(int i=0; i<12; i++)
{
freq[i] = -1;
}
for(int i=0; i<12; i++)
{
count = 1;
for(int j=i+1; j<12; j++)
{
if(storeKeys[i] == storeKeys[j])
{
count++;
freq[j] = 0;
}
}

if(freq[i]!=0)
{
freq[i] = count;
}
}
for(int i=0; i<12; i++)
{
if(freq[i]!=0 && storeKeys[i] != NULL)
{
Serial.println(storeKeys[i]);
Serial.println(freq[i]);
Serial.println("==========");
}
}

上面的代码可以工作,但显示所有元素的频率。我只想显示前三个重复元素。

这里是在线模拟器的链接:

https://circuits.io/circuits/5073094-the-unnamed-circuit/edit

谢谢。

最佳答案

答案来自here

使用以下函数对频率数组进行排序,然后仅获取排序数组的最后三个元素。

 void sort(int a[], int size)
{
for(int i=0; i<(size-1); i++)
{
for(int o=0; o<(size-(i+1)); o++)
{
if(a[o] > a[o+1])
{
int t = a[o];
a[o] = a[o+1];
a[o+1] = t;
}
}
}

}

关于c - 在 LCD 显示屏上打印前三个重复元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44365468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com