2014-03-28 54 views
-1

I \中號試圖在其中創建從左側的(半)金字塔解決℃的問題,我已經做到了這一點至今ç簡單的算法錯誤

int height; 

do 
{ 
    printf("give the height of the pyramid \n"); 
    height = GetInt(); 

} 
while(height <= 0 || height > 23); 

for(int i = 2; i < height+2 ; i++) 
{ 
    printf("\n"); 

    int spacenum = height - i; 

    //this is for space 
    for(int k = 0; k < spacenum; k++) 
    { 
     printf(" "); 
    } 


    //this is for hex 
    for(int k = 0; k < i; k++) 
    { 
     printf("#"); 
    } 


} 

getInt方法是自定義庫它做這樣的scanf

所以,如果我舉一個參數可以說8

看起來是這樣的:

 ## 
    ### 
    #### 
    ##### 
    ###### 
####### 
######## 
######### 

我希望它看起來像這樣:

 ## 
     ### 
    #### 
    ##### 
    ###### 
    ####### 
######## 
######### 

我該怎麼辦? 東西埃爾斯還有更好的方法嗎?用不同的代碼做這樣的事情?我的意思是不同的方法

+1

嘗試是什麼樣子是錯誤的圖像?從那裏開始,變化應該變得明顯。 – Ashe

+0

int spacenum = height - i + 1; –

+0

使用'spacenum = height - i + 1'。 – lurker

回答

0

你的條件

for(int k = 0; k < spacenum; k++) 

原因造成的問題,應該是

for(int k = 0; k <= spacenum; k++) 

int height; 

do 
{ 
    printf("give the height of the pyramid \n"); 
    height = GetInt(); 

} 
while(height <= 0 || height > 23); 

for(int i = 2; i < height+2 ; i++) 
{ 
    printf("\n"); 

    int spacenum = height - i; 

    //this is for space 
    for (int k = 0; k <= spacenum; k++) { 
    { 
     printf(" "); 
    } 


    //this is for hex 
    for(int k = 0; k < i; k++) 
    { 
     printf("#"); 
    } 


} 
+0

這是比上面的更好的解決方案,它擺脫了硬編碼謝謝! – Nick

+0

np,如果這是你正在尋找的問題的答案,請隨時給我一個積極的回答,並接受它作爲正確的答案,thx,祝你的c學習:) – rorra

+0

我會那樣做如果我有代表它需要:) – Nick