Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C中数组的水平和垂直直方图_C_Arrays_Logic_Histogram - Fatal编程技术网

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

我需要得到给定数组的水平和垂直直方图。下面是我试过的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;
#包括
#定义尺寸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。“简单”的意思是使用更少的变量、循环、函数等。。完全使用减少的代码行。。