Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_2_С_Условн опер.doc
Скачиваний:
4
Добавлен:
23.11.2019
Размер:
104.45 Кб
Скачать

Условная операция (?:)

Условная операция "?:" - единственная трехчленная (тернарная) операция

в C++, имеющая три операнда. Ее синтаксис:

условие ? выражение 1 : выражение 2;

Первый операнд является условием, второй операнд содержит значение условного выражения в случае, если условие истинно (возвращает ненулевое значение), а третий операнд равен значению условного выражения, если условие ложно (возвращает нуль).

Например, оператор:

grade > 3 ? cout<<"Вы хорошо знаете материал" : cout<<"Плохо";

в зависимости от значения переменной grade выдаст текст "Вы хорошо знаете материал" при значении grade, превышающем 3, и текст "Плохо" при меньшем значении grade.

Оператор с условной операцией выполняет фактически те же функции, что

и оператор if...else…. Но в ряде случаев применение условной операции компактнее и нагляднее оператора if...else. К тому же иногда условная операция может использоваться в таких ситуациях, когда применение оператора if...else… синтаксически невозможно.

В условной операции условные выражения могут быть практически любого типа (любым скалярным выражением, арифметическим выражением, указателем, структурой, объединением), но типы двух выражений в операции должны быть согласованными. В качестве условных выражений могут также фигурировать какие-то исполняемые действия.

О выделении цифр в числе

Предположим, имеется число В = 7634. Требуется выделить или получить значение первой и последней цифр в этом числе (первая цифра а1=7, а последняя а4=4).

Для решения подобной задачи целесообразно воспользоваться методами целочисленной арифметики:

а1=В/1000; // деление целых есть число целое, т.е.

а4=В%10; // остаток от деления целого на целое, т.е. .

Следовательно, для того, чтобы получить значение второй по порядку цифры, можно воспользоваться формулой:

Контрольные вопросы

  1. Форма оператора if?

  2. Форма тернарной операции?

  3. Написать два варианта программы выбора наименьшего из трех заданных чисел. Первый вариант - использовать оператор if. Второй - использовать тернарную операцию.

  4. Запишите оператор if...else, выводящий слово High, если значение переменной

score больше 100, и слово Low в противном случае. Переменная score имеет тип int.

  1. Предположим, что savings и expenses — инициализированные переменные типа double. Запишите оператор if...else, предназначенный для выполнения следующих действий:

    1. Если значение savings не меньше значения expenses, то значение переменной savings уменьшается на значение переменной expenses, а переменой expenses присваивается значение О.

    2. Если же значение savings меньше expenses, этот оператор должен просто выводить сообщение об этом, не меняя значений переменных.

  1. Запишите оператор if...else, выводящий слово Passed, если значение переменной exam больше или равно 60 и значение переменной programsdone больше или равно 10. В противном случае этот оператор должен выводить слово Failed. Переменные exam и programsdone имеют тип int.

  2. Запишите оператор if...else, выводящий слово Warning, если значение переменной temperature больше или равно 100, либо значение переменной pressure больше или равно 200. В противном случае этот оператор должен выводить слово ОК. Переменные temperature и pressure имеют тип int.

  3. Рассмотрим квадратный многочлен вида: . Условие, при котором он положителен (то есть больше нуля), определяет множество чисел, либо меньших меньшего корня (-1), либо больших большего корня (+2). Запишите логическое выражение на C++, представляющее это условие.

  4. Рассмотрим квадратный многочлен вида: .Условие, при котором он отрицателен, определяет множество чисел, больших меньшего корня (+1) и меньших большего корня (+3). Запишите логическое выражение на C++, представляющее это условие.

  5. Что выводят приведенные ниже фрагменты кода, если они выполняются в составе программы? Объясните свои ответы.

  1. if(O)

cout << "О is true";

else

cout << "О 1s false":

cout<<endl;

6) if(1)

cout << "1 is true":

B) if(-l)

cout « "-1 is true":

else

cout « "-1 is false":

cout endl:

  1. Вычислить функцию:

,

где

, .

  1. Чему будет равно с после выполнения фрагмента программы:

int a=5, b=6, c;

if (a < b) c = a; else c = b;

  1. Чему будет равно с после выполнения фрагмента программы:

int a=5, b=6, c;

c = a; if (a > b) c = b;

  1. Чему будут равны a, b, с после выполнения фрагмента программы:

int a=5, b=6, c;

c = a; if (a > b) c = b;

c = a; a = b; b = c;

  1. Чему будут равны u, u1, u2 после выполнения фрагмента программы:

unsigned u1,u2,u; u1 = 5; u2 = -1; u=0; if (u1 > u2) u++;

  1. Чему будут равны s1, s2, i1, i2 после выполнения фрагмента программы:

long int i1=200004, s; // эдесь int – 2 байта, long int – 4 байта

int i2=20000;

int s1,s2;

s1 = i1 + i2; s2 = (long)i1 + i2;

if (s1 == s2) s=0; else s=1;

  1. Чему будут равны i после выполнения фрагмента программы:

i=0; if (i++) i++;

  1. Чему будут равны i после выполнения фрагмента программы:

i=0; if (++i) i++;

  1. Записать выражение,: "m - истина, если a и b имеют разные знаки".

  2. Записать содержательную формулировку для выражения: m = (a * b) > 0;

  3. Записать содержательную формулировку для выражения: m = a > 0 ? a : -a;