§ 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, а затым цэлую частку ад дзялення атрыманай астачы на 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. Зыходныя даныя: пераменная х (значэнне пераменнай).

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. Аналіз вынікаў. Поўная праверка праграмы патрабуе ўвесці значэнні, якія належаць кожнай з абласцей, што ўтвараюцца пры перасячэнні прамых.