§ 4. Оператор ветвления

4.2. Решение задач с использованием оператора ветвления

 

Пример 4.2. Таня и Катя живут в разных домах. Им стало интересно, кто из них живет ближе к школе. Они разместили на карте прямоугольную систему координат так, чтобы школа имела координаты (0, 0). Известно, что Танин дом имеет координаты (x1; y1), а Катин — (x2; y2). Девочки ходят в школу по прямой и проходят разные расстояния. Написать программу, которая определит, чей дом ближе к школе.

Этапы выполнения задания

 I. Исходные данные: координаты домов девочек x1, y1, x2, y2.

II. Результат: сообщение о том, чей дом ближе.

III. Алгоритм решения задачи.

1. Ввод координат домов.
2. Вычисление расстояний r_T  — от Таниного дома и r_K  —  от Катиного дома до школы. Для вычисления расстояния воспользуемся теоремой Пифагора:

r subscript T space equals square root of x subscript 1 superscript 2 space plus space y subscript 1 superscript 2 end root space     и     r subscript K space equals square root of x subscript 2 superscript 2 space plus space y subscript 2 superscript 2 end root space.

3. Сравнение расстояний и вывод ответа

IV. Описание переменных: x1, y1, x2, y2, r_T, r_K  —  тип double.

Пример 4.3. Проверить является ли введенное число трехзначным, и если да, то вывести четные цифры этого числа.

Этапы выполнения задания

 I. Исходные данные: a (трехзначное число).

II. Результат: переменные a1, a2, a3 (цифры числа) или сообщения: «не трехзначное», «нет четных цифр».

III. Алгоритм решения задачи.

1. Ввод исходного числа. 
2. Проверка числа. Число a является трехзначным, если 99 < a < 1000. 
3. Если число трехзначное — выделяем его цифры.

3.1. Для выделения первой цифры a1 находим целую часть от деления числа a на 100. 
3.2. Для выделения второй цифры a2 числа a находим остаток от его деления на 100, а затем целую часть oт деления полученного остатка на 10. 
3.3. Последняя цифра числа a3 является остатком от деления числа a на 10. 
3.4. Для проверки цифры на четность нужно проверить, равен ли нулю остаток от деления цифры на 2. 
3.5. Если ни одна из цифр числа не является четной, то вывести соответствующее сообщение.

4. Вывод результата.

IV. Описание переменных: a, a1, a2, a3 – int.

Пример 4.4. Вычислить значение функции для заданного x.

f left parenthesis x right parenthesis space equals space open curly brackets table attributes columnalign left end attributes row cell x space long dash space 2 comma space если space x space less than negative 2 end cell row cell x comma space если space long dash space 2 space less or equal than space х space less or equal than 2 end cell row cell 2 square root of х space plus space 2 end root comma space если space х space greater than 2 end cell end table close

Этапы выполнения задания

I. Исходные данные: переменная x  (значение переменной).

II. Результат: переменная f (значение функции).

III. Алгоритм решения задачи.

1. Ввод исходных данных. 
2. Проверка значения x и вычисление значения функции в зависимости от значения аргумента.

2.1. Сначала проверим истинность условия x < –2.  Если оно истинно, то вычислим значение функции по формуле f = x – 2. Иначе (это значения, для которых x ≥ –2) проверим следующее условие.
2.2. Проверяем условие x ≤ –2. Если оно верно, то значение функции вычислим по формуле f = x3, иначе (остаются значения, для которых x > 2) значение функции вычисляется по формуле begin mathsize 16px style f space equals space 2 square root of x space plus space 2 end root. end style

3. Вывод результата.

IV. Описание переменных: x, f — double.

Пример 4.5. Определить, принадлежит ли точка a(x, у) данной области.

Этапы выполнения задания

I. Исходные данные: переменные x и y (координаты точки).

II. Результат: слово «да» или «нет» в зависимости от принадлежности точки закрашенной области.

III. Алгоритм решения задачи.

1. Ввод исходных данных.
2. Область ограничена тремя прямыми:  y = x , y = –x, y = a. Точка принадлежит области, если одновременно выполняются три условия:  y ≥ x, y ≥ –x, y ≤ a. Чтобы определить, какой из знаков («≤», «≥») поставить в уравнение вместо знака «=», достаточно взять произвольную точку, принадлежащую области, и посмотреть, как будут выполняться условия для этой точки. Например, при a = 5 точка с координатами (1; 3) принадлежит области и выполняются следующие условия: 3 ≥ 1, 3 ≥ –1 ,  3 ≤ 5.

3. Вывод результата.

IV. Описание переменных: x, y – double.

Пример 4.2.

V. Программа:

#include <iostream>

#include <cmath>

 

using namespace std;

 

int main()

{

  setlocale(0,"");

  double x1, y1, x2, y2;

  cout << "Танин дом" << endl;

  cin >> x1 >> y1;

  cout << "Катин дом" << endl;

  cin >> x2 >> y2;

  double r_T = sqrt(x1 * x1 + y1 * y1);

  double r_K = sqrt(x2 * x2 + y2 * y2);

  if (r_T < r_K)

    cout << "Танин дом ближе" << endl;

  else

    cout << "Катин дом ближе" << endl;

  return 0;

}

VI. Тестирование.

Танин дом — x1 = 2.3, y1 =  4.5, Катин дом — x2 = −2.1, y2 = 4.9.

Результат:

Танин дом — x1 = 6.1, y1 = 4.5, Катин дом — x2 = 1.71, y2 = 3.2.

Результат:

Пример 4.3.

V. Программа:

#include <iostream>

 

using namespace std;

 

int main()

{

  int a;

  cout << "vvedite a=";

  cin >> a;

  if (> 99 && a < 1000)

  {

    int a1 = a / 100;

    int a2 = a / 10 % 10;

    int a3 = a % 10;

    cout << "chetnye cifry:" << endl;

    if ( a1 % 2 == 0)

      cout << a1 << endl;

    if (a2 % 2 == 0)

      cout << a2 << endl;

    if (a3 % 2 == 0)

      cout << a3 << endl;

    if (a1 % 2 && a2 % 2 && a3 % 2 )

      cout << "net takih" << endl;

  }

  else

    cout<<"chislo ne trehznachoe"<<endl;

  return 0;

}

VI. Тестирование. Результат для значения 345:

Другие варианты исходных данных

VII. Анализ результатов. Для полной проверки программы требуется еще проверить значения, в которых цифр меньше трех, содержащие 1 четную цифру (на разных позициях), две четные цифры.

Пример 4.4.

V. Программа:

#include <iostream>

#include <cmath>

 

using namespace std;

 

int main()

{

  double x,f;

  cout << "x = ";

  cin >> x;

  if (< -2)

    f = x - 2;

  else

    if (<= 2)

      f = x * x * x;

    else

      f = 2 * sqrt(+ 2);

  cout << "f = " << f << endl;

  return 0;

}

V. Тестирование:

VI. Анализ результатов. Число 5 больше 2, поэтому вычисление значения функции происходит по формуле f space equals space 2 square root of x plus 2 end root space equals 2 square root of 7. Для числа 0.3 вычисления происходят по формуле f space equals space x to the power of 3 space end exponent equals space left parenthesis negative 0.3 right parenthesis cubed. Полная проверка программы требует ввести значения, принадлежащие каждому из указанных в условии промежутков.

Пример 4.5.

V. Программа:

#include <iostream>

 

using namespace std;

 

int main()

{

  setlocale(0, "");

  double a, x, y;

  cout << "a=";

  cin >> a;

  cout << "x, y" << endl;

  cin >> x >> y;

  if (>= x && y >= -&& y <= a)

    cout << "да" << endl;

  else

    cout << "нет" << endl;

  return 0;

}

VI. Тестирование:

VII. Анализ результатов. Полная проверка программы требует ввести значения, принадлежащие каждой из областей, которые образуются при пересечении прямых.