2013-12-23 208 views
-2

我一直在使用嵌套循環創建自己的C++程序來創建某種形狀。我最近的項目是建立一個形狀,看起來像這樣C++嵌套循環形狀

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

,但我已經寫了一個程序,它給我的這個

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

也在這裏結果是我的代碼

#include <iostream> 
using namespace std; 

void main(){ 
//displays a top triangle going from 1 - 5(*) 
for (int i = 0; i <= 5; i++){ 
    for (int j = 0; j <= i; j++){ 
     cout << "*"; 

    } 

    cout << endl; 
} 
//displays a bottom to top triangle 5 - 1(*) 
for (int k = 0; k <= 5; k++){ 
    for (int l = 5; l >= k; l--){ 
     cout << "*"; 
    } 

    cout << endl; 
} 
system("pause"); 
} 

這將是有益的謝謝你:)

+1

我會建議之一:在調試器中運行您的程序,看什麼,直到你看到不正確的輸出發生和/或運行使用你的程序「每次通過每個迴路發生鉛筆和紙「,再次注意到輸出開始看起來錯誤時,在那一點上注意循環在做什麼,爲什麼它是錯誤的。 – Eric

+1

我認爲這很有趣,你建議有人不知道如何使這個程序工作只是加載'gdb'並得到黑客攻擊。 –

回答

1

在你的第二個嵌套循環,你不打印空格。

有一個字符串,是一個三個空格,然後是內循環的每次運行後,追加到它的另一個空間和打印:

spc = " "; 
for (int k = 0; k <= 5; k++){ 
    cout << spc; 
    for (int l = 5; l >= k; l--){ 
     cout << "*"; 
    } 
    spc += " "; 
    cout << endl; 
} 
+0

你也可以告訴我你添加的代碼對這個程序做了什麼,以及我的錯誤在哪裏。 – user3126681

+0

男人,這是相當自我記錄。你還需要''spc'之前的類型,可能'std :: string'。 –

+0

@Andrey對於OP來說這不會很難,我沒有寫出完整的解決方案。您還需要'main' :) – Maroun

1

在你的第二個循環,你想:

std::string spc = " "; // add #include <string> at the top of the file 
for (int k = 0; k <= 5; k++) { 
    cout << spc; 
    for (int l = 5; l >= k; l--){ 
     cout << "*"; 
    } 
    spc += " "; 
    cout << endl; 
} 
1

你可以試試這個:http://ideone.com/hdxPQ7

#include <iostream> 

using namespace std; 

int main() 
{ 
    int i, j, k; 
    for (i=0; i<5; i++){ 
     for (j=0; j<i+1; j++){ 
      cout << "*"; 
     } 
     cout << endl; 
    } 
    for (i=0; i<5; i++){ 
     for (j=0; j<i+1; j++){ 
      cout << " "; 
     } 
     for (k=5; k>i+1; k--){ 
      cout << "*"; 
     } 
     cout << endl; 
    } 
    return 0; 
} 

這是它的輸出:

* 
** 
*** 
**** 
***** 
**** 
    *** 
    ** 
    * 
0

希望這有助於(需要優化)。

void printChars(int astrks, int spcs, bool bAstrkFirst) 
{ 
    if(bAstrkFirst) 
    { 
     for(int j = 0; j<astrks;j++) 
     { 
      std::cout<<"*"; 
     } 
     for(int k = 0; k<spcs;k++) 
     { 
      std::cout<<" "; 
     } 
    } 
    else 
    { 

     for(int k = 0; k<spcs;k++) 
     { 
      std::cout<<" "; 
     } 
     for(int j = 0; j<astrks;j++) 
     { 
      std::cout<<"*"; 
     } 
    } 
    std::cout<<std::endl; 
} 

int main() 
{ 
    int astrk = 1, spc = 7; 
    for(int x = 0; x<5; x++) 
    { 
     printChars(astrk++, spc--, true); 
    } 
    for(int x = 0; x<5; x++) 
    { 
     printChars(--astrk, ++spc, false); 
    } 
    getchar(); 
    return 0; 
} 

輸出:

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