2016-11-18 20 views
-5

私の研究に課題があるC + +の新機能です。C++の列出力

コード:

#include <iostream> 
#include <iomanip> 

using namespace std; 

int main() 

    { 
     for (int i = 1, j = 1; i <= 9; i++, j++) { 

      cout << setw(5) << right << i; 
      if(j==3) { 
       j=0; 
       cout << "\n"; 
      } 
     } 
     return 0; 
    } 

は、この出力が得られます。

1 2 3 
4 5 6 
7 8 9 

しかし、私はこの出力を必要とする:

1 4 7 
2 5 8 
3 6 9 

配列を使用することはできません。私はこれがシンプルだと思った(ループなどを試したことがあるが)、それを理解することはできない。どんな助けでも大歓迎です。

+0

これまでに何を試みましたか? –

+1

これは一般的な解決策である必要がありますか?だから、数字「1」〜「10」や「11」を印刷する必要がある場合、それらはどのように見えるでしょうか? – Obicere

+0

ヒント:数式を使用してください。第1列と第2列の関係は何ですか?第2列と第3列の関係は何ですか?部門は役に立ちますか?余りはどうですか? –

答えて

1

ソリューションは、次のように非常に簡単です:

#include <iostream> 

int main() { 

    for (int i = 1; i <= 3; i++) { 
     std::cout << i << "\t" << (i + 3) << "\t" << (i + 6) << "\n"; 
    } 

    return 0; 
} 

私はあなたが問題のこれらの種類を解決するための基本的な数学の論理に考えなければならないことを示唆しています。

上記のコードは次のような出力が生成されます。ここでは

1 4 7 
2 5 8 
3 6 9 

あなたは各行を見れば、あなたはそれぞれの値が3

  • i = 1、最初の値だけ増分されていることがわかりますがそれは私自身です。
  • 2番目の値はi+3です。
  • 3番目の値はi+6です。