Отримання знань

дистанційна підтримка освіти школярів


Умовний оператор if (коротка та повна форма)

  Лінійні програми завжди виконують ту ж саму послідовність команд. Використання оператора умови if дозволяє в залежності від введених даних деякі команди виконувати, а деякі – ні. 

   Програма з розгалуженням при різних запусках може працювати по-різному.

Повна форма

Блок-схема Алгоритмічна мова Мова C++ 
  якщо <умова>
         то <серія1>
         інакше <серія2>      
  все    
  if  (умова)
        {
            <серія1>;
         }
   else
        {
             <серія2>;
         }

Скорочена форма

Блок-схема Алгоритмічна мова Мова C++ 
  якщо <умова>
         то <серія>     
  все    
  if  (умова)
        {
            <серія>;
         }

  УВАГА!

       ¤  Якщо умова – істинна (правдива), то виконується серія1, інакше – серія2.

       ¤  Умова у С++ завжди береться в дужки.

       ¤  Якщо серія складається з однієї команди, то використовувати фігурні дужки “{” і “}” не обов’язково.



Задача Fraction

  Дано ціле число x. Знайти значення .

  Контрольні приклади

      1) x= 7    =>    y= 137.5

      2)  x= 5    =>    ‘error’

Розв’язання

  Почнемо з опису змінних.

  За умовою відомо, що x – ціле число. При обчисленні значення змінної y виконується операція ділення, яка не завжди даватиме цілий результат. А тому змінна y – дробового (дійсного) типу.

         int x;

        double y;

   Зчитаємо значення змінної x, введене з клавіатури.

         cin>>x;

  Обчислення значення змінної y не завжди є можливим. Слід врахувати, що ділити на 0 не можна. Тобто, якщо знаменник x-5 не дорівнює 0, то обчислення можливе.

   В іншому випадку відбуватиметься ділення на нуль, що неможливо. У такій ситуації слід видавати повідомлення про помилку (‘error’).

        якщо x-5 не дорівнює 0
                то
                      
                       друк y
                інакше друк (‘помилка’)
       все

   Операція “не дорівнює” на С++ позначається !=.

   Чисельник та знаменник є складеними виразами, тому їх слід взяти в дужки.

   Для отримання дробового результату чисельник 9-4*x перетворимо з цілого у дробовий тип командою double().

           if (x-5!=0)
          {
               y=3*x*x+double(9-4*x)/(x-5);
               cout<<"y="<<y;
           }
          else
          {
              cout<<"error";
           }

   Серія1 має 2 команди, які обов’язково слід брати в фігурні дужки.

   Серія2 містить лише одну команду, а тому може не містити “{” і “}”.

          if (x-5!=0)

         {

              y=3*x*x+double(9-4*x)/(x-5);

              cout<<"y="<<y;

         }

         else  cout<<"error";

  Програма матиме вигляд:

       #include <bits/stdc++.h>

       using namespace std;

       int main(int argc, char** argv) 

       {

            int x;

            double y;

            cin>>x;

            if (x-5!=0)

            {

                 y=3*x*x+double(9-4*x)/(x-5);

                 cout<<"y="<<y;

            }

            else

           {

                 cout<<"error";

            }

           return 0;

       }


Задача Race

   Одного літнього вечора Змій Горинич та Баба-Яга дивились по супутниковому телебаченні чемпіонат світу з автоперегонів “Формула-1”. Обговорення результатів перейшло в дискусію: хто з них літає швидше. Для визначення переможця вирішили влаштувати змагання.

   Наступного ранку гонщики зібрались біля стартового каменя. Домовились, що змагання триватиме T годин, і полетіли навипередки. Змій Горинич летів зі швидкістю V1 км/год, а Баба-Яга на ступі долала V2 км/год.

   Хто з юних гонщиків переміг, і яка відстань була між ними на кінець змагання (через T год)?

   Вхідні дані

   Програма зчитує з клавіатури введені через пропуск три цілих числа T, V1 і V2 (T, V1, V2 <= 30000) – тривалість змагання, швидкість Змія Горинича та швидкість Баби-Яги.

   Вихідні дані

   Програма виводить на екран через пропуск два цілих числа – код переможця (1 – виграв Змій Горинич, 2 – перемогла Баба-Яга, 0 - нічия) і відстань між переможцем та аутсайдером.

   Приклади вхідних і вихідних даних

       Введення: 2  40  35
       Виведення: 1  10

       Введення: 3  37  37
       Виведення: 0  0

Розв’язання

   Нехай S1 – шлях, який пролетів Змій Горинич, S2 – Баба Яга, r – різниця між гонщиками.

   Тоді 

          S1=V1*T;

         S2=V2*T;

   Можливі 3 випадки:

    1) S1>S2, тоді переміг Змій Горинич. Потрібно виводити число 1 і різницю r= S1-S2 (від більшої відстані S1 віднімаємо меншу відстань S2).

   2) Якщо S1<S2, то перемогла Баба Яга. Виводимо число 2 і різницю r=S2-S1 (від більшої відстані S2 віднімаємо меншу відстань S1).

   3) У випадку S1=S2 отримуємо нічию. Виводимо через пропуск нулі (перший нуль – ознака нічиєї, другий – відстань між гонщиками).

         якщо S1>S2
                  то
                       r= S1-S2
                       друк (1, r)
         все
         якщо S1<S2
                 то
                      r=S2-S1
                      друк (2, r)
         все
         якщо S1=S2
                то друк (0, 0)
         все

   Команда порівняння = мовою С++, як і мовою Python, позначається ==.  

   Програма матиме вигляд:

       #include <bits/stdc++.h>

     using namespace std;

     int main(int argc, char** argv) 

     {

           int T, V1, V2, S1, S2, r;

           cin>>T>>V1>>V2;

           S1=V1*T;

           S2=V2*T;

           if (S1>S2)

           {

               r=S1-S2;

               cout<<"1 "<<r;

            }

           if (S1<S2)

           {

               r=S2-S1;

               cout<<"2 "<<r;

           }

           if (S1==S2)

           {

               cout<<"0 0";

           }

           return 0;

     }


В системі: гості - (1); користувачі - (0)