2017-03-26 221 views
0

我一直試圖克服這個問題現在幾個小時,我似乎有一種方法來處理這種情況。看起來,使用選擇語句在創建必要的表格方面起作用。雖然有格式問題。嵌套 - 循環創建乘法表C++

我想知道是否有一種方法來創建相同的表 只使用嵌套的for循環,如我們的教授所述。

是否需要選擇語句,或者我們是否可以實現嵌套循環獲取相同結果的系統?

下面的圖片是所需的表:

Here is the required table


但下面的圖片是我Here is my result

下面是我的代碼:

for (int i = 0; i <= numChoice; ++i) 
    { 
     if (i == 0) 
     { 
      for (int k = 1; k <= numChoice; ++k) 
      { 
       cout << " " << k; 
      } 
      cout << "\n"; 
     } 
     else 
     { 
      cout << i << " | "; 
      for (int j = 1; j <= numChoice; ++j) 
      { 
       if (j*i <= 9) 
       { 
        cout << " " << j*i << "|"; 
       } 
       else if (j*i > 9 && j*i <= 100) 
       { 
        cout << " " << j*i << "|"; 
       } 
       else if (j*i > 99 && j*i <= 999) 
       { 
        cout << " " << j*i << "|"; 
       } 
      } 
      cout << "\n"; 
      for (int k = 0; k <= numChoice; ++k) 
      { 
       if (k == 0) 
       { 
        cout << "-|"; 
       } 
       else 
       { 
        cout << "----|"; 
       } 
      } 
      cout << "\n"; 
     } 
    } 
+0

你的心不是說清楚的問題。是關於表格的格式嗎?您的意思是您用來了解數字位數的「選擇語句」?這些io操縱器可讓您格式化表格:[right](http://www.cplusplus.com/reference/ios/right/)和[setw](http://www.cplusplus.com/reference/iomanip /運輸及工務局局長/)。 – user463035818

+1

你的代碼示例中已經有*嵌套for循環*,所以我不明白這個問題。 – zett42

+0

@ zett42主要問題是 - 我是否需要選擇語句才能完成此任務,還是隻能使用嵌套的for循環獲取相同的結果。 – FranticCode

回答

-1

使用下面的結構:

for (int i=0; i<=numChoice; i++) // display first row of numbers 
cout <<"\t" << i << "\t"; 
cout << "\n"; 
for (int i=0; i <=numChoice; i++) { 
    cout << i << "\t"; 
    for (int j=0; j <=numChoice; j++) 
    cout << i*j << "\t"; 
cout << "\n"; 
} 
+0

我試圖使用您提供的代碼,但它打印出混合結果。不管怎樣,謝謝你。 – FranticCode

1

下面的代碼使用如果沒有其他構造。格式可以通過使用setw獲得,用於設置整數的寬度。以下代碼可以產生完美的輸出。

#include<iostream> 
    #include<iomanip> 
    using namespace std; 
    int main() 
    { 
    int i,j;  
    cout<<"  "<<1;//5 space chars 

    for(i = 2;i <= 10;++i) 
     cout<<" "<<i;//4 space chars 

    cout<<endl; 
    cout<<" ----|"; 

    for(i = 2;i <= 10;++i) 
     cout<<"----|"; 

    cout<<endl; 

    for(i = 1;i <= 10;++i) 
    { 
     cout<<setw(2)<<i<<"|"; 

     for(j = 1;j <= 10;++j) 
      cout<<setw(4)<<j*i<<"|"; 

     cout<<endl; 
     cout<<" -|----"; 

     for(j = 2;j <= 9;++j) 
      cout<<"|----"; 

     cout<<"|----|"; 
     cout<<endl; 

    } 
    return 0; 
    } 
+1

嘿,謝謝你幫助了一噸!唯一的問題是它不會超過10我現在正在重寫它,但行的格式化會被拋棄,但是仍然謝謝你1 – FranticCode

0

@FranticCode。我也和你在同一班,並且在做這個家庭作業時也有問題。我仍然不明白,但我想出瞭如何操縱Sumeet的代碼來給我們正確的格式。我現在遇到的唯一問題是在第一個乘法表之後和重新顯示菜單之前添加一個空白空間。我會分享我擁有的,也許你可以弄明白。還是要請教授回顧第5章,因爲我想學習它而不是隻提交作業。

#include <iostream> 
#include <iomanip> 
#include <string> 
#include <cstdlib> 
#include <ctime> 
using namespace std; 

int main() 
{ 
    char userSelection; 
    int numForTable; 
    int col; 
    int row; 

do 
{ 
    cout << "MENU" << endl 
     << "a) Generate Multiplication Table" << endl 
     << "q) Quit the program" << endl 
     << "Please make a selection: "; 
    cin >> userSelection; 

    if (userSelection == 'a') 
    { 
     cout << "Please enter a number for your multiplication table: " << endl; 
     cin >> numForTable; 

     while (numForTable < 1 || numForTable > 10) 
     { 
      cout << "Please enter a number between 1 & 10." << endl; 
      cin >> numForTable; 
     } 

     cout << "\n" 
      << "MULTIPLICATION TABLE: " << numForTable << "'s" << endl 
      << "\n" 
      << " " << 1; 

     for (col = 2; col <= numForTable; ++col) 

      cout << " " << col; 
      cout << endl; 
      cout << " ----|"; 


     for (col = 2; col <= numForTable; ++col) 

      cout << "----|"; 
      cout << endl; 


     for (col = 1; col <= numForTable; ++col) 
      { 
       cout << setw(2) << col << "|"; 

       for (row = 1; row <= numForTable; ++row) 

        cout << setw(4) << col * row << "|"; 
        cout << endl; 
        cout << " -|----"; 

       for (row = 2; row <= numForTable - 1; ++row) 

        cout << "|----"; 
        cout << "|----|"; 
        cout << endl;  
      } 
    } 

    else if (userSelection != 'q') 
    { 
     cout << "Invalid Selection\n" << endl; 
    } 

    else if (userSelection == 'q') 
    { 
     cout << " You have chosen to quit the program. Thank you for using!" << endl; 
    } 
} 

while (userSelection != 'q'); 

//system("PAUSE"); 
return 0; 
} 

enter image description here

+0

嘿! Shroyer是你的教授嗎?你在哪個階段? – FranticCode

+0

她是:)和星期一晚上課。我是凱文。我發佈了相同的問題,或多或少,並且被某人的評論引導至您的帖子,他們說我們有非常類似的問題 – Khovsepa