绘制垂直直方图c#

时间:2016-11-25 11:15:01

标签: c# for-loop console histogram

我想从整数数组计算控制台中的垂直直方图。 数组被这个正弦公式填充,然后两个for循环应该做到了魔术:

for (int i = 0; i < 30; i++) //fill array
    f[i] = (int)(10 * Math.Sin(2 * Math.PI / 30 * i) + 15);

//draw histogram:
int maxValue = f.Max(); 
for (int i = 0; i <= maxValue; i++)
{
    for (int j = 0; j < f.Length; j++)
      {
        if (f[j] >= maxValue)
            Console.Write("*");
        else
            Console.Write(" ");
      }
    maxValue--;
    Console.Write("\n");
}

这是我的代码输出的内容: my result

但结果应如下所示: right solution

它的工作部分直到第13行星和空间......

正如我从我的结果中看到的那样:它确实有效,但不知何故外部for循环只想运行13次然后决定停止,但我不知道为什么。这也是我提出这个问题的原因。

提前致谢!!

2 个答案:

答案 0 :(得分:0)

将填充阵列部件更改为:

f[i] = (int)(10 * Math.Sin(2 * Math.PI / 30 * i) + 40);

答案 1 :(得分:0)

您在水平和垂直维度都使用maxValue,这可能是对的。

更改外循环的退出条件。而不是:

for (int i = 0; i <= maxValue; i++)

...写下这个:

for (int i = 0; i <= f.Length; i++)

......得到这个:

      ****
     ******
    ********
    ********
   **********
  ************
  ************
 **************
 **************
****************
****************
****************
*****************            *
*****************            *
******************          **
*******************        ***
*******************        ***
********************      ****
*********************    *****
******************************
******************************
******************************
******************************
******************************
******************************
******************************
******************************
******************************
******************************
******************************
******************************