2014-11-05 150 views
0

它是我在計算機科學的第一年,我在這個問題上遇到了一些麻煩。 指導員要求寫代碼的平行四邊形:3個循環的平行四邊形與C++

輸入行數:13

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

...具有強制奇條目(如4改變到5)。規則是 - 我不能使用燉肉 - 必須僅使用3個循環繪製形狀 - 加上一個強制輸入循環(而r介於3和23之間) - 必須使用所有計算的總行數或當前行數(可' T選用上一行並不能產生自己的數字)

int main() { 
    int control = 0; 
    int i = 0, j = 0, k = 0, l = 0; 
    int r = 0, c = 0, crntRow = 0, crntRow2 = 0, 
     cuur_8r = 0, space = 0, star = 0; 
    char a = '-', b = '+'; 

    //cin >> r; 
    r = 11; 
    if (!(r % 2)) 
     r++; 
    c = 0; 
    //cout << c << r; 
    for (i = 0; i < r; i++) 
    { 
     space = r/2; 
     star = r/2; 
     crntRow = i; 
     while (crntRow > space) 
     { 
      space++; 
      cout << a; 
     } 
     //cout << j; 
     for (int j = 0; j < c; j++) 
     { 
      if (star > j) 
      { 
       cout << b; 
      } 
     } 
     c++; 
     cout << '\n'; 
    } 
} 

TLDR:這是我想出了迄今爲止可怕的代碼,我不知道如何縮小後數星星rows/2

+0

我相信你的解決方案和你的問題需求奇數行?因爲偶數你不能得到你在第一個代碼片段中提到的內容? – ha9u63ar 2014-11-05 20:45:39

+0

多數民衆贊成那是正確的,它必須是奇怪的,因爲圖形的中心,偶數會使圖表看起來很滑稽的中間。中間部分應該是(奇數)r/2 + 1 – tariqebadi 2014-11-05 20:49:51

回答

1

您的教練所指的三個循環是:

  1. t上的外環他行
  2. 一個循環前綴空格每行(0空格上半年)
  3. 一個循環,每行打印星(這始終是非零)

這是一個非常簡裝例如:

int i, j, k, sp, st; 
int r = 11; 

// 1. An outer loop over the lines 
for (i = 0; i < r; i++) 
{ 
    if(i <= r/2) { 
     sp = 0;  // No spaces in the first half 
     st = i + 1; // Increasing stars in the first half 
    } else { 
     sp = i - r/2; // Increasing spaces in the second half 
     st = r - i; // Decreasing stars in the second half 
    } 

    // 2. A loop to prefix spaces to each line (0 spaces for the first half) 
    for(j = 0; j < sp; j++) cout << ' '; 

    // 3. A loop to print stars on each line (this is always non-zero) 
    for(k = 0; k < st; k++) cout << '*'; 

    cout << '\n'; 
} 

作爲一個鍛鍊; Tibial,你可以做同樣的事情在兩個循環:

  1. 過線外環
  2. 一個內部循環在角色中的每一行

在這種情況下,你會選擇內循環的每次迭代過程中要打印的字符。

+0

這太神奇了,謝謝!我花了很多時間試圖修復錯誤的部分= [。我想嘗試一下這個練習,但我不確定如何在哪裏放置字符來正確打印。 – tariqebadi 2014-11-05 21:10:46