Выражение_1 ? выражение_2 : выражение_3

 

Первым вычисляется значение выражения_1. Если оно истинно (т.е. true или не равно нулю), то вычисляется значение выражения_2, которое становится результатом операции. Если результатом вычисления выражения_1 будет false (нулевое значение), то в качестве результата условной операции выступит значение выражения_3.

 

Рассмотрим фрагмент программы с вычислением абсолют ­ ного значения переменной:

 

// Листинг 4.4

double x;

cin >> x;

cout <<"x < 0? -x: x = "<<(x < 0? –x: x)<<endl;

 

Результат выполнения фрагмента программы:

Вводим с клавиатуры -5.4

x < 0? -x: x = 5.4

 

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

 
 


Запишем функцию в виде формул:

 

// Листинг 4.5

#include <iostream>

using namespace std;

 

// Определение констант

#define x1 -2

#define x2 -1

#define x3 1

#define x4 2

 

int main() {

setlocale(LC_ALL,"Russian");

float x, y;

cout << "Введите x: ";

cin >> x;

if (x < x1 || x >= x4) y = 0;

else if (x >= x1 && x < x2) y = -x - 2;

else if (x >= x2 && x < x3) y = x;

else if(x >= x3 && x < x4) y = -x + 2;

cout <<"x = "<< x <<'\t'<<"y = "<< y <<'\n';

 

return 0;

}

Задача 2: Дана заштрихованная область на плоскости и точка с координатами (x,y). Создать программу, определяющую, попадает ли точка в заштрихованную область. Координаты точки вводить с клавиатуры, результат вывести на экран в виде текстового сообщения.

 

Запишем условия попадания точки в заштрихованную об­ласть в виде формул. Область можно описать как круг, пересе­кающийся с треугольником. Точка может попадать либо в круг, либо в треугольник, либо в их общую часть.

 

 

 
 


или

 

 

Три условия из правых фигурных скобок должны вы­полняться одновременно, поэтому в программе они объеди­няются с помощью логической операции И (&&). Её приоритет выше, чем приоритет операции ИЛИ (||), и ниже, чем приоритет операций отношения, поэтому дополнительные скобки не нужны.

 

// Листинг 4.6

#include <iostream>

using namespace std;

 

int main() {

// Поддержка русского языка

setlocale(LC_ALL, "Russian");

float x, y;

cout << "Введите координаты точки x и y: ";

cin >> x >> y;

if (x*x + y*y <= 1

|| x <= 0 && y <= 0 && y >= -x-2)

cout << "Попадание\n";

else cout << "Мимо\n";

 

return 0;

}

 

Если в программе необходимо задать константы (например, N = 100, M = 0, V = 1, EPSILON = 0,000001), это можно сделать одним из трёх способов:

 

1) определение именованных констант:

 

const int N = 100, M = 0, V = 1;

const double EPSILON = 1.e-6;

 

2) с помощью определения констант препроцессорной директивой #define:

 

#define N 100

#define M 0

#define V 1

#define EPSILON 1.e-6

 

3) определение целочисленных констант с использованием перечисления enum:

 

// Константу EPSILON так задать нельзя

enum {M, V, N = 100};

 

Перечислимый тип в языке C++ определяется с помощью ключевого слова enum.

 

Формат описания перечисления:

enum [имя_типа_перечисления]

{список_именованных_констант}[имя_переменной];

Квадратные скобки в описании формата здесь означают необязательность элементов описания.

 

Список_именованных_констант представляет собой перечень именованных целочисленных констант (принимающих значения из диапазона int), приводится через запятую и может содержать инициализаторы. Если в списке именованных констант нет ни одного инициализатора, то значения констант начинаются с 0 и увеличиваются на 1 слева направо. Именованная константа с инициализатором получает заданное им значение, а все следующие за ней именованные константы без инициализатора получают значения, последовательно увеличенные на 1 каждая. Имена перечисляемых констант должны быть уникальными, а значения могут совпадать. Например:

enum seasons{winter, spring, summer, automn};

= 0 =1 =2 =3

enum week_days {mon = 1, tue, wed, thu, fri} wd;

=2 =3 =4 =5

       
 
   

 


Анонимный перечислимый тип с инициализаторами позволяет создать именованные целочисленные константы:

 

enum { a, b, c=5, d, e=6, f=38 };

=0 =1 =6

Переменные перечислимого типа могут принимать значения только перечисленных именованных констант:

 

wd = wed;

 

Переменные перечислимого типа занимают 4 байта в памяти компьютера (как тип int). Поскольку перечислимый тип относится к пользовательским, для него не определены операции, например, ввода/вывода и др. Для него можно вводить собственные операции (см. далее тему «Перегрузка функций»).

 

Задание.

1. Создать программу на языке С++, в которой по введённому значению аргумента X вычисляется значение функции Y, заданной в виде графика. Параметр R вводить с клавиатуры. Константы, определяющие границы интервалов аргумента X, задать (если это возможно) с помощью перечисления enum.

2. Создать программу, которая определяет, попадает ли точ­ка с заданными координатами X и Y в область, закрашенную на рисунке чёрным цветом. Значения координат вводить с клавиа­туры. Результат в виде текстового сообщения вывести на экран.

Вариант 1

1. 2.

 

Вариант 2

1. 2.

 

Вариант 3

1. 2.

Вариант 4

1. 2.

Вариант 5

1. 2.

Вариант 6

3. 4.

Вариант 7

1. 2.

 

 

Вариант 8

 

1. 2.

 

Вариант 9

1. 2.

 

Вариант 10

1. 2.

Вариант 11

 

1. 2.

 

 

Вариант 12

1. 2.

Вариант 13

1. 2.

 

 

Вариант14

1. 2.

Вариант 15

1. 2.

Вариант 16

1. 2.

Вариант 17

1. 2.

Вариант 18

1. 2.

Вариант 19

1. 2.

Вариант 20

1. 2.

Вариант 21

1. 2.

Вариант 22

 

1. 2.

Вариант 23

1. 2.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: