私は最近Cの学習を始めましたが、この小さなテストに遭遇しました。配列内で最も頻繁に見つかる数字
ユーザーから10の数字を読み取るコードを作成します。
最大値を印刷&最も小さい数値を入力してから印刷します。
私はすべてがシンプルでしたが、最も頻繁な数字が私を夢中にさせていました。私はしばらく検索しましたが、明確な答えは見つかりませんでした。
コードは、私が考えるだけのアイデアだった
#include <stdio.h>
#include <stdlib.h>
int main()
{
int hi[10], i=0, largest, smallest;
while(i<10)
{
printf("Enter a number:");
scanf("%d", &hi[i]);
i++;
}
smallest = hi[0];
largest = hi[0];
printf("Entered Numbers: ");
while(i!=0)
{
if(hi[10-i] < smallest) { smallest = hi[10-i]; }
if(hi[10-i] > largest) { largest = hi[10-i]; }
printf("%d | ", hi[10-i]);
i--;
}
printf("\nLargest number is = %d || Smallest number is = %d", largest, smallest);
return 0;
}
書いた:
は別の配列を作ります。
元の配列の[i]の値を取得しています。
[i]と元の配列の残りの値(等しいかどうか)を比較します。
等しい場合は、他の配列の値をインクリメントします。
他の配列の中で最も大きな値を確認します。最も高い値です。
ここでは、最も頻繁な要素の順序とその要素が何回入力されたかを知っています。
@Vittorio Romeo:そうです、それはOPが既に解明した解決策のようです。それは私には分かりやすいようです。 – doynax
ここに提供されているソリューションをご覧ください:http://stackoverflow.com/questions/26566265/frequency-of-numbers-in-a-1d-array –
配列をソートします。その後、forループ内のhi [0] .. h [9]から配列内の項目を列挙します。その後、余分な変数を使用して重複カウントを追跡します。 – selbie