2016-02-09 3 views
3

Моя задача заключается в следующем:Как распечатать оставшуюся часть этих чисел?

номера печати 0, 1, 2, ..., userNum, как показано, с каждым номером отступом этим количеством пробелов. Для каждой печатной строки напечатайте начальные пробелы, затем число и затем новую строку. Подсказка: используйте i и j как переменные цикла (явно введите i и j). Примечание. Избегайте любых других пробелов, таких как пробелы после напечатанного номера. Пример: userNum = 3 печатает:

0 
1 
    2 
    3 

До сих пор у меня есть:

#include <iostream> 
using namespace std; 

int main() { 
    int userNum = 0; 
    int i = 0; 
    int j = 0; 


    for (i; i <= userNum; i++) 
    { 
    for (j; j <= userNum; j++) 
    { 
     cout << userNum << endl; 
    } 
    } 

    return 0; 
} 

Я еще новичок в этом. Как я могу зациклиться на остальных числах и пробелах?

ответ

4

Ваши петли вставляются синтаксически, но не семантически, так как j инициализируется только за пределами циклов. Кроме того, вы печатаете userNum, что определенно не то, что вы должны печатать.

Подумайте, почему требуются две вложенные петли: один для подсчета от 0 до userNum, а другой (внутренний) для подсчета пробелов перед каждым из этих чисел. Второй должен быть также петлей, поскольку количество пробелов зависит от того, насколько далеко дошел первый цикл.

Попробуйте изменить свои петли так, чтобы петля над i заботилась о цифрах, а петля над j заботится о пространствах.

Подсказка: вы можете (и должны) объявлять переменные цикла внутри первой части for конструкции:

for (int i = 0; i <= userNum; ++i) { 
    for (int j = 0; j <= /*something*/; ++j) { 

Поскольку это, очевидно, обучение упражнения, я намеренно не выдавая полный ответ.

+0

Сторона примечания: One <= is wromg –

+0

@ DieterLücking Зависит от «чего-то», не так ли? – Angew

+0

Уверен, или что-то –

Смежные вопросы