我想从整数数组计算控制台中的垂直直方图。 数组被这个正弦公式填充,然后两个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次然后决定停止,但我不知道为什么。这也是我提出这个问题的原因。
提前致谢!!
答案 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++)
......得到这个:
****
******
********
********
**********
************
************
**************
**************
****************
****************
****************
***************** *
***************** *
****************** **
******************* ***
******************* ***
******************** ****
********************* *****
******************************
******************************
******************************
******************************
******************************
******************************
******************************
******************************
******************************
******************************
******************************
******************************