私は、ヒストグラム関数にユーザ入力を入力して配列を使用し、配列の各インスタンスの値を比較して、表示する "*"の数を表示するカウンタを持つようにしています。ヒストグラムをC++で使用する
ヒストグラムの印刷で、ビンに分割しようとしています。 ***スコア約3点、約90点、ビン8点| *****値が80から89ポイントの配列内の5つのインスタンスに対して、以下同様に続きます。
私のforループではビン[i]のポインタを使ってみましたが、動作しませんでした。&ビン[i]を試しましたが、これは1ビンのアドレスしか与えず、 *配列のカウンタから取得します。
このヒストグラムを試して作成するために使用しているテストは次のとおりです。ケース1:100,95,90,85,80,75,70,65,60,40,20、および5。コードを短くするために、ヒストグラムの主機能と私の機能を掲載します。あなたの時間をありがとう。
int main()
{
int scores[100];
int bins[10];
int counter[99];
int count = 0;
cout << "Enter a score (-1 to stop): ";
do {
cin >> scores[count++];
} while (scores[count - 1] != -1);
count--;
Histogram(scores, count, counter);
int i;
for (i = 0; i < 10; i++)
;
{
cout << &bins[i] << "| " << endl;
for (size_t k = 0; k < counter[i]; k++) {
cout << "*" << endl;
break;
}
}
deviation(scores, count);
return 0;
}
int* Histogram(int scores[], int count, int counter[])
{
int k = 0;
for (int i = 0; i < count; i++) {
if (scores[i] >= 90) {
counter[k++];
}
else if (scores[i] >= 80 && scores[i] < 90) {
counter[k++];
}
else if (scores[i] >= 70 && scores[i] < 80) {
counter[k++];
}
else if (scores[i] >= 60 && scores[i] < 70) {
counter[k++];
}
else if (scores[i] >= 50 && scores[i] < 60) {
counter[k++];
}
else if (scores[i] >= 40 && scores[i] < 50) {
counter[k++];
}
else if (scores[i] >= 30 && scores[i] < 50) {
counter[k++];
}
else if (scores[i] >= 20 && scores[i] < 30) {
counter[k++];
}
else if (scores[i] >= 10 && scores[i] < 20) {
counter[k++];
}
else if (scores[i] < 10) {
counter[k++];
}
}
return counter;
}
このような問題を解決する適切なツールは、デバッガです。スタックオーバーフローを尋ねる前に、コードを一行ずつ進める必要があります。詳しいヘルプは、[小さなプログラムをデバッグする方法(Eric Lippert)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を参照してください。最低でも、あなたはあなたが行った観察と一緒に、[編集]あなたの質問あなたの問題を再現[、最小完全、かつ検証](http://stackoverflow.com/help/mcve)の例を含むようにする必要があります\しますデバッガ。 –
問題は何ですか?コードをコンパイルして実行するとどうなりますか?何かエラーがありますか?タイクの出力は、あなたが望むものとどう違うのですか? –
私はコンパイルして実行してもエラーはありません。出力は次のようになります。スコアのユーザー入力を取得し、-1は入力を中断し、ビンのアドレスを表示します。 "|"後のものは9です。 *** 8 | ** 7 | ** 6 | ** 5 | 4 | * 3 | 2 | * 1 | 0 | *それぞれ別の行にある – Unholypalidn