2016-11-25 309 views
1

我想計算在控制檯的垂直直方圖從一個整數數組。 陣列獲取此竇公式填充,之後兩個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次,然後決定停止,但我不知道爲什麼。這也是我問這個問題的原因。

在此先感謝!

回答

0

更改填充陣列部分:

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

這就是正確的,太感謝您 – user2448539

+0

也是一個正確的答案,謝謝你真是太棒了! – user2448539

0

你在水平和垂直尺寸,這不可能是正確使用maxValue。外部循環的

變化退出條件。取而代之的是:

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

...這樣寫:

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

......得到這個:

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

現在的作品,你的幫助表示讚賞! – user2448539

+0

在這種情況下,隨時接受了答案。 :-) –