配列内で値が発生する回数を数える最善の方法は何ですか?

私は、テキストファイルから多くの割り当てマークを配列に読み込んで、特定の角括弧内にいくつのマークがあるか、つまり40-49,50-59などを数えることを指定しています。テキストファイルの-1は、代入が渡されなかったことを意味し、値0は、代入が非常に悪くなったことを意味します。

いくつかの for ループを使用してこれを簡単に行うことができますし、 if ステートメントを使って値をチェックしながら適切な整数をインクリメントして発生数を数えます私はプログラムを「より良い」方法で実装する必要があります。これを行うためのより良い、より効率的な方法は何でしょうか?私は今すぐコードを探しているわけではなく、ただ単にこれはあなたがすべきことです。私はそれを行うためのさまざまな方法を考えようとしましたが、どれも優れているようには見えず、あたかもそれを複雑にしようとしているかのように感じます。

私は値が関数のパラメータとして格納されている2D配列を使用してみましたが、関数を使用して特定の値の数を出力しましたが、構文が間違っているためコンパイルできませんでしたパラメータとして2D配列を使用するために、私はこれを行う方法についてあまりよく分かりません。

どんな助けでも感謝します、ありがとう。

2
範囲はすべて10桁ですか?
追加された 著者 Lalaland,

2 答え

思考のための食糧として、これが学校の課題であれば、あなたはコースで学んだ他のものを適用したいかもしれません。

あなたはまだソートを学びましたか?たぶん配列を何度か反復しないようにリストをソートすることができます。あなたは一度それを越えて、-1をつかんで、あなたの持っているものを吐き出し、次の括弧内のすべてのものをつかむことができます。

edit:もちろん、1d配列を使用していると仮定します。

1
追加された

なぜループのためのカップルが必要ですか? 1つで十分です。

配列[0]が0〜9のマーク、配列[1]が10〜19のマークなどのサイズ10の配列を作成します。数字が表示されたら、整数除算を使用して適切な配列バケットに入れます。 array [(int)mark/10] ++。終了すると、配列には各バケットのマーク数が格納されます。

1
追加された
私は最初にテキストファイルから値を格納するために2D配列を使用し、次にこの配列を見て、40未満、40と50,50と60,60と70、および70より大きいマークがいくつあるかを調べる必要があります-1の値は、割り当てが渡されなかったことを意味します。
追加された 著者 user533507,