绘制垂直直方图C#

问题描述:

我想计算在控制台的垂直直方图从一个整数数组。 阵列获取此窦公式填充,之后两个for循环应该做的魔力:绘制垂直直方图C#

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号线...

,我可以从我的结果可以看出:它做窝K,但不知何故外循环只想运行13次,然后决定停止,但我不知道为什么。这也是我问这个问题的原因。

在此先感谢!

更改填充阵列部分:

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

这就是正确的,太感谢您 – user2448539

+0

也是一个正确的答案,谢谢你真是太棒了! – user2448539

你在水平和垂直尺寸,这不可能是正确使用maxValue。外部循环的

变化退出条件。取而代之的是:

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

...这样写:

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

......得到这个:

 **** 
    ****** 
    ******** 
    ******** 
    ********** 
    ************ 
    ************ 
************** 
************** 
**************** 
**************** 
**************** 
*****************   * 
*****************   * 
******************   ** 
*******************  *** 
*******************  *** 
********************  **** 
********************* ***** 
****************************** 
****************************** 
****************************** 
****************************** 
****************************** 
****************************** 
****************************** 
****************************** 
****************************** 
****************************** 
****************************** 
****************************** 
+0

现在的作品,你的帮助表示赞赏! – user2448539

+0

在这种情况下,随时接受了答案。 :-) –