2016-11-18 3 views
-5

Новое на C++, имеющее задание в моем исследовании.C + + columnwise output

Код:

#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

Подсказка: используйте некоторую математику. Какова связь между первым и вторым столбцами? Какова связь между 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, первое значение Я сам.
  • Второе значение: i+3.
  • Третье значение: i+6.