Сподіваюся, ви добре розібралися з темою операторы выбора if и else і вам не склало великих труднощів вирішитизадачи по цій темі. У цьому ж уроці ми продовжуємо вивчати основи програмування на C ++ і познайомимося ще з одним оператором вибору (ветвления) – це тернарный оператор ? :
Используется он обычно в тех случаях, якщо умова і код, который надо выполнить, в результате проверки условия, очень простые. К примеру, спросить у пользователя хочет он продолжить работать в программе или же хочет выйти из неё. Синтаксис такой:
Спочатку треба записати необхідне нам умову і за ним поставити знак питання ? . Далі, в этой же строке, после знака вопроса пишем первую простую команду (код), которая будет выполняться, если условие вернет истину (true). Після цієї команди ставимо двокрапку: и пишем вторую команду (код). Эта вторая команда после двоеточия, выполнится только в том случае, если условие возвращает ложь (false).
Приклад. Допустим пользователь снимает деньги в банкомате. Он провел эту операцию и на экране должен появиться вопрос: “Вы хотите выполнить другую операцию?” Користувачеві залишається зробити вибір (да или нет) и нажать соответствующую кнопку. Организуем этот выбор в следующей программе:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <iostream> using namespace std; int main() { setlocale(LC_ALL, "rus"); // значение этой переменной будет изменять пользователь bool variable = true; cout << "Выполнение каких-то транзакций по счету карты...\n"; cout << "Вы хотите выполнить другую операцию (1 - да, 0 - нет)? "; cin >> variable; variable == 1 ? cout << "Выберите операцию!\n..........\n\n" : cout << "До свидания! Не забудьте взять чек!\n\n"; return 0; } |
Пользователь делает выбор и вводит значение – рядок 13. А в строке 15 мы проверяем введенное значение. якщо умоваvariable == 1 возвращает true (то есть если переменная действительно равна 1), то выполнится код, расположенный после знака вопроса ? . А тот, что находится после двоеточия : – игнорируется. Иначе, если пользователь ввел 0, игнорируется код расположенный между ? і : , а выполняется второй код. Вот результат работы если введено 1:
если 0:
Вот еще один интересный пример. В нем, с помощью тернарного оператора, определяется минимальное и максимальное число из двух значений, которые введет пользователь.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #include <iostream> using namespace std; int main() { setlocale(LC_ALL, "rus"); int firstDigit = 0; int secondDigit = 0; int max = 0; int min = 0; cout << "Введите firstDigit - первое число:"; cin >> firstDigit; cout << "Введите secondDigit - второе число:"; cin >> secondDigit; // используя тернарный оператор, определяем максимум // и сразу записываем его в переменную max max = (firstDigit > secondDigit) ? firstDigit : secondDigit; // так же определяем и записываем min min = (firstDigit < secondDigit) ? firstDigit : secondDigit; /*// или так: if (max == firstDigit) min = secondDigit; else min = firstDigit;*/ cout << "Максимум = " << max << endl; cout << "Минимум = " << min<< endl; return 0; } |
Рассмотрим строку 20. Код будет выполняться так – вначале отработает тернарный оператор, вернет значение исходя из поставленного условия, а после это значение запишется в переменную max. якщо умова(firstDigit > secondDigit) – істина, значениеfirstDigit записується в max , если ложь, то записывается значение secondDigit. Далі має бути все зрозуміло. Компилируем:
Программа работает отлично!
Добре про тернарного операторі розказано в цьому відео-уроці.
Напоследок добавлю, що в деяких угодах про кодування не рекомендують використовувати тернарний оператор через те, что снижается читабельность кода. Но знать о нём надо, так как никто не может предугадать, какие коды придется встретить и читать в будущем. Про угоди кодування більше можна дізнатися в нашій статті Форматування вихідного коду.
На мою так краще так:
#include
using namespace std;
int main()
{
setlocale(LC_ALL, “rus”);
// значення цієї змінної змінюватиме користувач
int змінна;
cout << "Выполнение каких-то транзакций по счету карты…\n";
cout <> variable;
variable == 1 ? cout << "Выберите операцию!\n……….\n\n" : cout << "До свидания! Не забудьте взять чек!\n\n";
return 0;
}