Отримання знань
дистанційна підтримка освіти школярів
Умовний оператор 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;
}