Вы находитесь на странице: 1из 5

Практическая работа №17

«Программирование алгоритмов с условиями. Операторы сравнения.»

По окончании каждой лабораторной работы должен быть сформирован


отчет, содержащий скрин кода программ и их работы.

Работа считается сданной, если все пункты практической работы выполнены,


и показан преподавателю отчет и рабочие программы.

Теоретические сведения

Операторы сравнения

Операции сравнения и логические операции в результате дают значение типа


bool, то есть true или false. Если же такое выражение встречается в контексте,
требующем целого значения, true преобразуется в 1, а false – в 0.

if else

В некоторых источниках говорится, что оператор выбора if else —


самостоятельный оператор. Но это не так, if else — это всего лишь форма
записи оператора выбора if. Оператор if else позволяет определить
программисту действие, когда условие истинно и альтернативное действие,
когда условие ложно. Тогда как if позволял определить действие при
истинном условии.

Синтаксис записи оператора выбора if else:


if (/*проверяемое условие*/)
{
   /*тело оператора выбора 1*/;
} else
      {
         /*тело оператора выбора 2*/;
      }

Читается так: «Если проверяемое условие истинно, то выполняется тело


оператора выбора 1, иначе (то есть проверяемое условие ложно)
выполняется тело оператора выбора 2«. Обратите внимание на то, как
записан оператор if else. Слово else специально сдвинуто вправо для того
чтобы программный код был понятен и его было удобно читать.
«Даны два числа, необходимо их сравнить».
#include <iostream>
using namespace std;
 
int main(int argc, char* argv[])
{
    int a, b;
    cout << "Vvedite pervoe chislo: ";
    cin >> a;
    cout << "Vvedite vtoroe chislo: ";
    cin >> b;
    if ( a >= b) // если a больше либо равно b, то
    {
     cout << a << " >= " << b << endl;
    } else  // иначе
         {
          cout << a << " <= " << b << endl;
         }
    system("pause");
    return 0;
}
В данном коде нас интересуют строки 14-20. Эти строки читаются так: если a (первое
число) больше либо равно b (второе число), то выполнить оператор вывода в строке 16
cout << a << " >= " << b << endl;

иначе выполнить оператор вывода в строке 19


cout << a << " <= " << b << endl;

В данном ифе мы используем операции соотношений >= и <=. Условие


перехода не совсем правильно, так как условие будет ложно только в том
случае, если первое число будет меньше второго, во всех остальных случаях
условие истинно. Значит, строку 19 нужно записать так
cout << a << " < " << b << endl; // в кавычках записать не меньше или
равно, а просто меньше.

А вот так сработала программа (см. Рисунок 1).


Рисунок 1 — Оператор выбора if else

Условный оператор (?:)

Условный оператор (?:) — это единственный оператор в языке C++, который


работает сразу с тремя операндами.

Синтаксис использования условного оператора следующий:

(выражение1) ? (выражение2) : (выражениеЗ)

Эта строка читается таким образом: если выражение1 возвращает true, то


выполняется выражение2, в противном случае выполняется выражениеЗ.
Обычно возвращаемое значение присваивается некоторой переменной.
В листинге 4.10 показано использование условного оператора вместо оператора if.

1: // Листинг 4.10. Пример использования условного оператора


3: #include <iostream.h>
4: int main()
5: {
6:    int x. у, z;
7:    cout << "Enter two numbers.\n";
8:    cout << "First: ";
9:    cin >> x;
10:   cout << "\nSecond: ";
11:   cin >> у;
12:   cout << "\n";
14:   if (x > у)
15:     z = x;
16:   else
17:     z = у;
19:   cout << "z: " << z;
20:   cout << "\n";
22:   z = (x > у) ? x : у;
24:   cout << "z: " << z;
25:   cout << "\n";
26:   return 0;
27: }
Enter two numbers.
First: 5
Second: 8
z: 8
z: 8

Анализ: Сначала создается три целочисленные переменные: x, у и z.


Значения первых двух вводятся пользователем. Затем в строке 14
выполняется инструкция if, которая позволяет узнать, какое из введенных
значений больше, причем выявленное большее значение присваивается
переменной z. Это значение выводится на экран в строке 19.
Ту же самую проверку выполняет в строке 22 условный оператор и
присваивает переменной z большее значение. Он читается следующим
образом: "Если x больше у, возвращаем значение x; в противном случае
возвращаем значение у". Возвращаемое значение присваивается переменной
z. Это значение выводится на экран в строке 24. Как видите, инструкция,
содержащая условный оператор, является более коротким эквивалентом
инструкции if...else.

Задание №1 Напишите программу, которая просит пользователя ввести


целое число, а затем сообщает, является ли его число чётным или нечётным. 

Задание №2 Вводятся три разных числа. Найти, какое из них является


средним (больше одного, но меньше другого).

Задание №3 Алгоритм задачи представлен в графическом виде: написать


программу на С++.

Задание №4 Перевести число, введенное пользователем, в байты или


килобайты в зависимости от его выбора.

Задание №5 По длинам трех отрезков, введенных пользователем,


определить возможность существования треугольника, составленного из этих
отрезков. Если такой треугольник существует, то определить, является ли он
разносторонним, равнобедренным или равносторонним.

Задание №6 Дана следующая функция y=f(x):


y = 2x - 10, если x > 0
y = 0, если x = 0
y = 2 * |x| - 1, если x < 0

Задание №7 Определить, является ли год, который ввел пользователем,


високосным или невисокосным.

Високосные года делятся нацело на 4. Однако из этого правила есть


исключение: столетия, которые не делятся нацело на 400, високосными не
являются.
Тестовые данные
1980
Високосный

1978
Обычный