2015-10-22 2 views
1

Итак, у меня есть простая программа на C, которая должна выводить уменьшающееся количество пробелов и все большее количество хэш-знаков в моей новой строке. Вот код, который я использовал, чтобы попытаться осуществить это:Значения в цикле, не изменяющиеся с увеличением?

for(x = 0; x < n; x++) { 
    for(y = n - 1; y > 0; y--) { 
     printf(" "); 
    } 
    for(int z = 2; z < n + 2; z++) { 
     printf("#"); 
    } 

    printf("\n"); 
} 

Я ожидаю, на основе кода отсчитывать, как это, что я должен видеть выход, как:

## 
    ### 

Однако, когда я запускаю мой код, я получаю последовательный вывод:

### 
    ### 

Любые мысли о том, где я пошло не по моему для петель, которые могли вызвать эту проблему?

+3

Не должны ли ваши внутренние петли делать что-то, что зависит от 'x'? В противном случае, почему вы ожидаете, что они выведут что-то другое в каждой строке? – Barmar

ответ

3

Здесь:

n = 3; 
for(x = 0; x < n; x++) { 
    for(y = 0; y < n; y++) { 
     printf("%c", (y < (n - x - 1)) ? ' ' : '#'); 
    } 

    printf("\n"); 
} 

Результат:

# 
## 
### 
1

Ниже чистейшей способ сделать это. 2 петли:

  • один для пространства от 0 к max MINUS row number
  • один для хэштегом из 0 в max MINUS number of space

Код:

int main() { 
    int n =10; 
    int x, y, z; 
    for(x = 0; x < n; x++) { 
     for(y = 0; y < n - x - 1; ++y) { 
      printf(" "); 
     } 
     for(z = 0; z < n - y; ++z) { 
      printf("#"); 
     } 

     printf("\n"); 
    } 
    return 0; 
} 

вы получите в результате:

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