No Image

Цикл while с двумя условиями

СОДЕРЖАНИЕ
0 просмотров
11 марта 2020

Цикл WHILE выполняется, пока выражение в скобках принимает значение true . Здесь нам наконец-то понадобится оператор инкремента ++ , увеличивающий значение переменной на единицу.

Разберём на примере: необходимо вывести на экран числа от 1 до 10. С помощью цикла while эту задачу можно решить следующим образом:

Результат в браузере:

Перед запуском PHP получает результат выражения в круглых скобках и приводит к булеву типу. Если он получит true – блок кода выполнится. Затем опять произойдёт вычисление результата выражения и повторное выполнение блока кода. И так до тех пор, пока результатом выражения не станет false .

Переменная $i создана нами специально – она выступает в роли счётчика и гарантирует, что скрипт будет выполнен столько раз, сколько нам нужно.

Будьте аккуратны при работе с циклом while. Вы можете случайно сделать бесконечный цикл вроде такого:

Если запустить этот скрипт, страница зависнет и через некоторое время в браузере отобразится ошибка.

При желании в цикл WHILE можно подставить сколько угодно условий:

1. Создайте переменную $count с любым числовым значением, например 10 .
2. С помощью цикла while выведите числа, количество которых равно $count, начиная с числа 1. Каждое последующее число должно быть больше предыдущего на 3. Т.е. при $count = 3 скрипт должен вывести 1 4 7 .

1. Создайте следующий массив: $arr = [3, 4, 9, 18, 22];
2. Напишите скрипт, который с помощью while переберёт все значения массива и выведет их на экран.

Я использую цикл while и хочу, чтобы пользователь ввел r, R, p или P. Но когда я добавляю более одного условия, например:

моя программа навсегда застрянет в цикле. Где, как будто я ввожу это так:

Читайте также:  Xbox не подключается к телевизору через hdmi

Тогда мой код выйдет из цикла for, если пользователь введет «r». Так почему же первый блок кода не работает? У меня нет ошибок, это означает, что это должна быть логическая ошибка, но я не понимаю. Как я могу получить больше условий в цикле for и заставить его работать?

Решение

Вам нужно использовать && вместо || потому что с помощью || состояние в while всегда true , Когда вы пишете «г», например, условие userinput != r ложно, но остальные верны, с && все выражения превращаются в false и while заканчивается.

Другие решения

Why does the above condition not work?

Причина в том, что если вы скажете x is not 3 or x is not 5 тогда, если x является 3 , затем x не является 5 Таким образом, все утверждение оценивается как истинное. Ваш отличается userInput != ‘r’ а также userInput != ‘p’ так же, как эта ситуация с x ,

Чтобы показать это проще, я покажу таблицу истинности для or , Когда выражение оценивается как true, ваш цикл while будет продолжаться ниже тех обстоятельств, когда p а также q утверждения, которые могут быть истинными или ложными, как userInput != ‘r’ ,

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

And Похоже, что это то, что вы хотите. Это правда таблицы:

Смысл, что с and условие, единственный способ для него быть истинным, если все предложения являются истинными.

Поэтому, если вы хотите, чтобы ответ не был ни r, ни p, ни R, ни P и т. Д., Используйте && для и:

И тогда цикл while завершится, как только userInput не соответствует ни одному из r , p , R или же P , Это потому, что, как программа оценивает, она проверяет:

Читайте также:  Windows 10 uwp что это

С примером userInput как «g»:

Вводит ли пользователь g равный r ? Нет. Итак, первое предложение верно. Вводит ли пользователь g равный p ? Нет. Итак, второе предложение верно. Вводит ли пользователь g равный R ? Нет. Таким образом, третье предложение верно. Вводит ли пользователь g равный P ? Нет. Таким образом, четвертое предложение верно. Поскольку все четыре имеют значение true, тогда все утверждение верно, и цикл while продолжается.

С примером userInput как «R»:

Вводит ли пользователь g равный R ? Нет. Итак, первое предложение верно. Вводит ли пользователь g равный R ? Нет. Итак, второе предложение верно. Вводит ли пользователь g равный R ? ДА. Таким образом, третий пункт является ложным. Так как часть выражения ложна, то целое и предложение ложно, поэтому цикл while завершается.

Задание попытался показать картинкой, но, зная mail, оно может и не прогрузиться.

На данный момент я осваиваю циклы. Обычно пользуюсь оператором for.
Мне нужно вычислить все значения функции при -1.7 Лучший ответ

float
x, xlo = -1.7, xhi = 9.4, dx = 9.3,
y, ylo = 0.0, yhi = 3.0, dy = 0.75;

for (x = xlo, y = ylo; y xhi) ? dy : 0, x = (x > xhi) ? xlo : x)
printf("(x=%f, y=%f)%c", x, y, (x+dx > xhi) ? ‘
‘ : ‘ ‘);

Комментировать
0 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
Adblock detector