C中数组的水平和垂直直方图

时间:2013-06-23 04:25:54

标签: 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 < 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;

}

1 个答案:

答案 0 :(得分:1)

干得好。但是,有一些小事可以改进:

似乎你错过了水平直方图上的x轴。

另外,在线:

bigcount = array[1];

有一个错误的错误。

我将采取的下一步是添加一些功能,以允许用户输入任意数据。