C中数组的水平和垂直直方图
我需要得到给定数组的水平和垂直直方图。下面是我试过的C代码。有什么方法可以改进这个方法或者简单的替代方法吗C中数组的水平和垂直直方图,c,arrays,logic,histogram,C,Arrays,Logic,Histogram,我需要得到给定数组的水平和垂直直方图。下面是我试过的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 < siz
#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;
#包括
#定义尺寸10
int main(){
int数组[size]={2,5,7,8,10,16,7,4,3,4};
int i,j,bigCount,temp;
/*获取水平直方图*/
对于(i=0;ibigCount)
bigCount=数组[i];
温度=大计数;
printf(“\n\n”);
/*获取垂直直方图*/
对于(i=0;i
}做得很好。但是,有一些小事情可以改进: 您似乎错过了水平直方图上的x轴 此外,在线:
bigcount = array[1];
有一个“一个接一个”的错误
我将采取的下一步是添加一些功能,允许用户输入任意数据。我可以给出
bigCount=array[0]
。但实际上也没有什么区别。是的,但那只是因为数组[0]不是最大值。如果是的话,你的柱状图就会不正确。我不明白你的意思。。但是,在查找bigCount的循环结束时,我们将获得最大值,而不管bigCount
的初始值是多少,只要它是该数组中的值。您是正确的。然而,若数组中只有一个元素,那个么您的程序将失败。通过使用数组[0],您可以考虑一个边缘情况,否则可能会导致segfault。“简单”的意思是使用更少的变量、循环、函数等。。完全使用减少的代码行。。