Преобразование цикла в цикл while в C ++ - PullRequest
0 голосов
/ 03 апреля 2012

Мне нужно преобразовать этот цикл for в do while:

for (int i = 0; i <= input; i = i + 2)
{
    cout << name << " is number " << input << endl;
    total = total + i;
}
cout << endl;
cout << total << endl;

Это то, что я имею до сих пор:

do
{
    cout << name << " is number " << input << endl;
    i += 2;
    total += i;
} while (i <= input);
cout << endl;
cout << total << endl;

Он не дает того же общего значения, что и цикл for. Что я делаю не так?

Ответы [ 6 ]

4 голосов
/ 03 апреля 2012

Вы должны добавить i к итогу, прежде чем увеличивать его на 2

Так что цикл do.. while должен выглядеть следующим образом:

do
{
    cout << name << " is number " << input << endl;
    total += i;
    i += 2;
} while (i <= input);
cout << endl;
cout << total << endl;
2 голосов
/ 03 апреля 2012

Основным отличием цикла for от цикла do-while является то, что:

  • цикл For выполняется 0 или более раз
  • Но цикл do-while выполняется 1 илибольше раз

Пример:

int input = 100;

//Will never execute as i is bigger than 5
for (int i = input; i<5; ++i)
    cout << i;

//Will execute only one time as i < 5 is checked only
//after first execution
int i = input;
do
{
    cout << i;
} while(i < 5);

Способ правильно выполнить вашу задачу:

int i = 0;
//if used to prevent first execution
if (i <= input)
{
    do
    {
        cout << name << " is number " << input << endl;
        total = total + i;
        i = i + 2;
    } while(i <= input);
}

Но для лучше переписать для цикла, как

for(BEFORE_STATEMENT; FINISH_STATEMENT; ITERATE_STATEMENT)
{
    LOOP_CODE
}

цикл while, который будет работать так же

BEFORE_STATEMENT
while(FINISH_STATEMENT)
{
    LOOP_CODE
    ITERATE_STATEMENT
}
1 голос
/ 03 апреля 2012

Вам просто нужно изменить

i += 2;
total += i;

на

total += i;
i += 2;

В вашем цикле for:

total = total + i;  

i равно 0 наПервая итерация.То, как вы делали это в цикле do - while, i было установлено на 2 до полного добавления.

0 голосов
/ 03 апреля 2012

Ваш код неверен.Corect это

do
{
    cout << name << " is number " << input << endl;
    total += i;//swap these lines
    i += 2;//
} while (i <= input);
cout << endl;
cout << total << endl;
0 голосов
/ 03 апреля 2012

Если вы не сделали этого в предыдущей части кода, вам нужно инициализировать i в do ... while.

Кроме того, в do ... while измените порядок увеличения итогового значения до увеличения i.

0 голосов
/ 03 апреля 2012

Выполнение пока будет выполнено, по крайней мере, один раз, независимо от значения i. Также вам следует инициализировать ваш i.

...