我需要获得给定数组的水平和垂直直方图。以下是我试过的C代码。有没有办法改进这个或任何简单的替代方法?
#include <stdio.h>
#define size 10
int main() {
int array[size] = {2, 5, 7, 8, 10, 16, 7, 4, 3, 4};
int i, j, bigCount, temp;
/* To get Horizontal Histogram */
for (i = 0; i < size; ++i) {
printf("\n%3d|", i);
for (j = 0; j < array[i]; ++j)
printf(" #");
}
/* To find the biggest count */
bigCount = array[0];
for (i = 0; i < size; ++i)
if(array[i] > bigCount)
bigCount = array[i];
temp = bigCount;
printf("\n\n");
/* To get Vertical Histogram */
for (i = 0; i < bigCount; ++i) {
printf("\n%3d|", bigCount - i);
for (j = 0; j < size; ++j)
if (array[j] < temp)
printf(" ");
else {
printf(" #");
--array[j];
}
--temp;
}
/* printing the x-axis */
printf("\n ");
for (i = 0; i < size; ++i)
printf(" -", i);
printf("\n ");
for (i = 0; i < size; ++i)
printf("%3d", i);
printf("\n");
return 0;
}
答案 0 :(得分:1)
干得好。但是,有一些小事可以改进:
似乎你错过了水平直方图上的x轴。
另外,在线:
bigcount = array[1];
有一个错误的错误。
我将采取的下一步是添加一些功能,以允许用户输入任意数据。