2016-10-13 3 views
4

Привет, я прочитал рекомендации по вопросам домашних заданий, и он говорит, что должен четко заявить, что это домашнее задание. Это домашнее задание, я провел последние 45 минут, пытаясь снова и снова. Я ударил стену и нуждаюсь в помощи.Вложенная петля для выполнения во время цикла

Мое назначение состояло в том, чтобы взять этот код из цикла Double For и преобразовать его в цикл while, вложенный в цикл for. Я успешно завершил это. Тем не менее, 3-я часть должна взять этот код и сделать внешний цикл for в цикле do while. Выхода необходимо прирастить «#» каждую строку так, если вход был «4»

# 
## 
### 
#### 

Ниже приведен код, который я написал, что мне нужно сделать внешнюю для цикла в сделай время цикла:

int main() 
{ 
    int side; 

    cout << "Enter a number: "; 
    cin >> side; 

    for (int i = 0; i < side; i++) 
    { 
     int j = i; 
     while(j >= 0) 
     { 
      cout << "#"; 
      j--; 
     } 
     cout << "\n"; 
    } 
} 

Это моя попытка до сих пор:

int main() 
{ 
    int side; 
    int i; 

    cout << "Enter a number: "; 
    cin >> side; 
    int j=side; 
    do 
    { 
     while(j >= 0) 
     { 
      cout << "#"; 
      j--; 
     } 
     cout << "\n"; 
     i++; 
    } 
    while(j >= side); 
} 

сказал мой учитель, пока код разъяснен и я понимаю, как это работает, что это нормально. Любая помощь приветствуется. Спасибо.

+3

Какова цель 'i ++;' в вашем цикле? –

+1

Я думаю, что вы первый человек, которого я вижу, пытаясь решить его домашнюю работу перед публикацией ... ничего себе. Хо, а почему нет цикла do-while, использующего i в его состоянии? – Treycos

+0

Не подрывайте свой пост. –

ответ

1

Первая ошибка, которую вы сделали это:

int i; //not initialized! 
/*...*/ 
i++; 

, и вы даже не использовать его в то время как делать-состоянии.

Так while(j >= side);>while (i >= side);

На самом деле, это не так, либо. Поскольку сторона является входом, вы хотите, чтобы i, чтобы проверить, является ли это меньше не больше затем вход. Так что while (i < side);

Другого дело int j=side;, когда вы уменьшаете j он никогда не сбрасывается, так что вы должны установить это в ваш сделай время цикла, а также инициализировать его с i, а не на стороне ....

Во всяком случае, вот полный код:

#include <iostream> 
using namespace std; 

int main() 
{ 
    int side; 
    int i = 0; 

    cout << "Enter a number: "; 
    cin >> side; 
    do 
    { 
     int j = i; 
     while (j >= 0) 
     { 
      cout << "#"; 
      j--; 
     } 
     cout << "\n"; 
     i++; 
    } while (i < side); 

    return 0; 
} 

пример вывода:

Enter a number: 10 
# 
## 
### 
#### 
##### 
###### 
####### 
######## 
######### 
########## 
+0

Спасибо, много! Я думаю, что у меня просто был серьезный мозговой туман, как его 3ам здесь :) Но после прослеживания кода это на самом деле имеет смысл! Теперь мне просто нужно обработать ошибку и заставить ее отказаться от негативов утром :) Неплохо, если я сообщу вам, если я столкнусь с проблемами, сделав его opperate тем же самым с негативами – XeXVeX

+0

Конечно, почему бы и нет. Удачи ! –

+0

еще одна вещь, мне нужно использовать «return 0;» при программировании. Мой код работает отлично. И @treycos не использует его либо – XeXVeX

0
  • while(j >= side); должно быть while(i <= side);
  • j должен быть инициализирован в каждой итерации внешнего цикла (j = i;)
  • int j=side; является ненужным.

дружественное предложение - назвать переменные и функцию описательно - row и column намного лучше, чем i и j.

1

Предлагаю

int main() 
{ 
    int side; 
    int i = 0; 
    cout << "Enter a number: "; 
    cin >> side; 

    do 
    { 
     int j = i; 
     while(j >= 0) 
     { 
      cout << "#"; 
      j--; 
     } 
     cout << "\n"; 
     i++; 
    }while(i < side) 
} 

для цикла, как правило, заключается в инициализации (i=0), условие останова (i < side) и приращение (i++); почему бы вам не использовать i?

0

Они отвечают выше решает вашу проблему, но позвольте мне показать вам более короткий способ сделать вещи:

int main() 
{ 
    int side; 

    std::cout << "Enter a number: "; 
    std::cin >> side; 

    int row = 1; 
    do 
    { 
     int col = 0; 
     while (col++ != row) 
     { 
      std::cout << "#"; 
     } 
     std::cout << "\n"; 
    } while (row++ != side); //This way, the condition is checked (row != side), and then row is incremented 
} 
+0

Я проверю это из tmrw. Так много мозгового тумана :) – XeXVeX

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