ヒストグラム プログラムに問題があります。必要な正確なものを印刷するようにしていますが、異常な間隔の問題があり、それを回避する方法について誰か助けてくれるかどうか疑問に思っていました。90-100 ブラケットの前のすべてのスペースに間違ったスペースがあることがわかります。
数字とアスタリスクの間にスペースがないようにするには、次のようにします。
*
*
* *
* *
* *
* *
* *
* *
* * *
* * * *
* * * *
0 1 2 3
また、 or の代わりに何かを使用することをお勧めできますsystem("Clear")
かsystem("PAUSE")
?
コード:
#include <iostream>
#include <iomanip>
using namespace std;
void readExamMarks(int examMarks[], int sizeOfArray, int& counter1, int& counter2, int& counter3, int& counter4,int& counter5, int& counter6,int& counter7, int& counter8, int& counter9, int& counter10){
cout << "Please enter a set of exam marks to see a histogram for:" << endl;
int x = 0;
for( int idx = 0; idx < sizeOfArray; idx++){
cin >> x;
if((x >=0) && (x <= 100)){
x = x/10;
switch(x){
case 1:
counter1++;
break;
case 2:
counter2++;
break;
case 3:
counter3++;
break;
case 4:
counter4++;
break;
case 5:
counter5++;
break;
case 6:
counter6++;
break;
case 7:
counter7++;
break;
case 8:
counter8++;
break;
case 9:
counter9++;
break;
case 10:
counter9++;
break;
}
examMarks[idx] = x;
}
else{
cout << "ERROR: Value must be in range [0...100], please enter a valid value\n";
}
}
}
void printExamMarksDecade(){
cout << setw(5) << "10-20 " << "21-30 " << "31-40 " <<"41-50 " << "51-60 " << "61-70 " << "71-80 " << "81-90 " << "91-100 ";
}
void printHisto(int examMarks[], int sizeOfArray,int counter1, int counter2, int& counter3, int& counter4,int& counter5, int& counter6,int& counter7, int& counter8, int& counter9, int& counter10){
system("cls");
while(counter1 != 0 ){
cout << setw(3) << "*" << endl;
counter1--;
}
while(counter2 != 0 ){
cout << setw(10) << "*" << endl;
counter2--;
}
while(counter3 != 0 ){
cout << setw(17) << "*" << endl;
counter3--;
}
while(counter4 != 0 ){
cout << setw(24) << "*" << endl;
counter4--;
}
while(counter5 != 0 ){
cout << setw(31) << "*" << endl;
counter5--;
}
while(counter6 != 0 ){
cout << setw(38) << "*" << endl;
counter6--;
}
while(counter7 != 0 ){
cout << setw(45) << "*" << endl;
counter7--;
}
while(counter8 != 0 ){
cout << setw(52) << "*" << endl;
counter8--;
}
while(counter9 != 0 ){
cout << setw(59) << "*" << endl;
counter9--;
}
}
int main()
{
int examMarks[30];
int counter1 = 0;
int counter2 = 0;
int counter3 = 0;
int counter4 = 0;
int counter5 = 0;
int counter6 = 0;
int counter7 = 0;
int counter8 = 0;
int counter9 = 0;
int counter10 = 0;
readExamMarks(examMarks, 30, counter1, counter2, counter3, counter4, counter5, counter6, counter7, counter8, counter9, counter10);
printHisto(examMarks, 30, counter1, counter2, counter3, counter4, counter5, counter6, counter7, counter8, counter9, counter10);
printExamMarksDecade();
system("PAUSE");
}