乱数でヒストグラムを作る
-
40人のクラスでテストを行ったと仮定します。その40人の点数を10点刻みのヒストグラフにして表示しましょう
ヒストグラムは*で表示し、1番上の行に 0 - 9 | ***、2行目は 10 - 19 | *****のように表示し最後の行は 90-100 | *のようにします#include <iostream> #include <cstdlib> using namespace std; int main() { int data[40]; int histCount[10]; //初期化 std::srand( time(NULL) ); for(int i=0; i<40; i++) { data[i] = rand() % 101; } for(int i=0; i<10; i++) { histCount[i] = 0; } //シャッフル for(int i=0; i<40; i++) { if (data[i] < 10) histCount[0]++; else if (data[i] < 20) histCount[1]++; else if (data[i] < 30) histCount[2]++; else if (data[i] < 40) histCount[3]++; else if (data[i] < 50) histCount[4]++; else if (data[i] < 60) histCount[5]++; else if (data[i] < 70) histCount[6]++; else if (data[i] < 80) histCount[7]++; else if (data[i] < 90) histCount[8]++; else histCount[9]++; } for(int i=0; i<10; i++) { if (i==0) cout << " 0- 9 | "; else if (i==9) cout << "90-100| "; else cout << i*10 << "-" << (i*10)+9 << " | "; for (int j=0; j<histCount[i]; j++) { cout << "*"; } cout << "\n"; } return 0; }
結局一番難しいのはいかに位置を合わせて表示するかです。何回かチャレンジしてきっちり合わせてください