我很难在C中创建这个直方图。事情是,分配是计算每个用户输入发生的频率。
For:1 0 6 1 5 0 7 9 0 7 - >有3x 0,2x 1等
然后,必须将事件转换为星号而不是出现次数。我想我已经完成了第一步和第三步,但我很难将数字转换成星星。我是否必须创建一个新循环,还是使用当前的嵌套循环?我会永远感激能为我提供一些见解的人。
所以我的练习是:
#include <stdio.h>
void printHistogram ( int *hist, int n );
int main() {
int i, j;
int inputValue;
printf("Input the amount of values: \n");
scanf("%d", &inputValue);
int hist[inputValue];
printf("Input the values between 0 and 9 (separated by space): \n");
for (i = 0; i < inputValue; ++i) {
scanf("%d", &hist[i]);
}
int results[10] = {0};
// Processing data to compute histogram, see 5.17
for (i = 0; i < 10; ++i) {
for(j = 0; j < inputValue; j++) {
if ( hist[j] == i){
results[i]++;
}
}
}
printf("\n");
printHistogram(hist, 10);
return 0;
}
void printHistogram(int *hist, int n) {
int i, j;
for (i = 0; i < n; i++) {
printf("[%d] ", i);
for ( j = 0; j < hist[i]; ++j) {
printf("*");
}
printf("\n");
}
}
10
1 0 6 1 5 0 7 9 0 7
Input the amount of values:
Input the values between 0 and 9 (separated by space):
[0] *
[1]
[2] ******
[3] *
[4] *****
[5]
[6] *******
[7] *********
[8]
[9] *******
Input the amount of values: 10
Input the values between 0 and 9 (separated by space):
[0] ***
[1] **
[2]
[3]
[4]
[5] *
[6] *
[7] **
[8]
[9] *
答案 0 :(得分:1)
在@ rafix07发表评论时,您只需拨打printHistogram(results, 10)
而不是printHistogram(hist, 10)
。
已经编译和测试......工作