Считается ли наличие цикла while внутри цикла for вложенным циклом while? - PullRequest
0 голосов
/ 31 мая 2019

Может ли наличие цикла while внутри цикла for считаться вложенным циклом while?
Как я могу решить эту же проблему, используя do while?

#include <stdio.h>

#define NUMS 3

int main() {
    // insert code here...
    int highVal;
    int lowVal;
    int i;
    printf("---=== IPC Temperature Analyzer ===---\n");

    for (i=1;i<=NUMS;i++){
        printf("Enter the high value for day %d: ",i);
        scanf("%d",&highVal);
        printf("Enter the low value for day %d: ",i);
        scanf("%d",&lowVal);

        while((highVal < lowVal)||(highVal >= 41 || lowVal <= -41)){

            printf("Incorrect values,temperature must be in the range -40 to 40,high must be greater than low\n");
            i--;
            highVal=1;
            lowVal=0;
        }
    }

    return 0;
}

Я получаю результаты, которые мне нужны, но назначение требует использования вложенного цикла while (или do while), а также цикла для запроса пользователя.

1 Ответ

0 голосов
/ 31 мая 2019

Может ли наличие цикла while внутри цикла for считаться вложенным циклом while?

Нет, это будет просто вложенный цикл, такой же, как и вложенный цикл.цикл:

foo:
    z = baz();
    x++;
bar:
    y++;
    if(x < 100) goto bar;
    if(y < 100) goto foo;

Обратите внимание, что вы можете конвертировать for() в while, отделяя части.Например, это:

    for (i=initial; i<=MAX; i++) {
        do_something();
    }

.. эквивалентно этому:

    i=initial;
    while (i<=MAX) {
        do_something();
        i++;
    }

Аналогичным образом вы можете довольно легко конвертировать while() в if и goto(и поэтому может конвертировать for() в if и goto тоже).Например, предыдущие for() и while() примеры эквивалентны этому:

    i=initial;
start:
    if( !(i<=MAX) ) goto end;
    do_something();
    i++;
    goto start;
end:
...