入力がキーパッドを使ってユーザーによって与えられる配列を持っています。すべての入力は storeKeys という名前の配列に格納されます。配列のインデックスは変数 storeKeysIndex によって保持され、キーが押されると押されたkeyの値が storeKeys 配列に格納されます。 storeKeysIndex が増えます。 storeKeys に値を持たせます
storeKeys = {3,2,5,7,1,1,9,9,9,1,3,1};
私は、液晶ディスプレイに、配列内の上位3つの繰り返し要素を表示させます。上記の配列では、値 '1'が4回繰り返され、 '9'が3回繰り返され、 '3'が2回繰り返されるため、lcdは1,9,3を表示します。他の値は、lcdによって表示されるべきではありません。
各要素の頻度を数え、その頻度を freq の配列に格納しようとしました。シリアルモニタで各要素の周波数を表示できます。しかし、私はどのように液晶ディスプレイ(またはシリアルモニタ)にトップ3の繰り返し番号を表示するかを得ていません。これがコードです:
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("==========");
}
}
上記のコードは機能しますが、すべての要素の頻度を表示します。上位3つの繰り返し要素のみを表示します。
これがシミュレータオンラインのリンクです。
https://circuits.io/circuits/5073094-the-unnamed-circuit/編集
ありがとう。