You are on page 1of 10

Лабораторна робота 3

Тема Умовні оператори у мові С

Приклад 1. Напишіть програму рішення квадратного рівняння з перевіркою на наявність


дійсних (не комплексних) коренів на основі тільки операторів if. Вид квадратного рівняння:

Як відомо, квадратне рівняння матиме дійсні корені, якщо його дискримінант буде
додатнім, тобто коли

Програмний код рішення прикладу:

Можливий результат виконання програми показаний на рис. 3.1.

Рис. 3.1. Результат рішення квадратного рівняння


У програмі послідовно перевіряються умови за допомогою операторів if. В останньому
випадку, коли коефіцієнт а = 0, квадратне рівняння вироджується і перетворюється на
лінійне рівняння. Рішення в цьому випадку очевидно.

У програмі застосовані функції scanf_s () замість стандартної функції scanf () мови С.


Крім того, в програму підключена бібліотека math.h для дій з математичними функціями,
наприклад, sqrt ().
У першому операторі if застосовано логічна умова І (&&) для перевірки того, що
дискримінант НЕ дорівнює від'ємному значенню і одночасно щоб перший коефіцієнт
квадратного рівняння не дорівнює нулю. Аналогічне умова прописана і для останнього
оператора if.

Завдання 1

1 Поясніть включення float перед функцією sqrt ().


2 У програму введіть зміни для обчислення комплексних коренів квадратного рівняння без
підключення додаткових бібліотек.
3 У програмі передбачте ситуацію, коли всі коефіцієнти квадратного рівняння дорівнюють
нулю.
4 Передбачте циклічне введення коефіцієнтів квадратного рівняння і виведення рішення
триразово.
5 Передбачте перевірку всіх можливих умов завдання коефіцієнтів квадратного рівняння.

Приклад 2. Напишіть програму рішення квадратного рівняння з перевіркою на наявність


дійсних коренів на основі конструкції if-else. Вид квадратного рівняння:

Програмний код рішення прикладу:

У програмі використані вкладені оператори if.


Результат виконання програми при виняткової ситуації показаний на рис. 3.2.
Рис. 3.2. Виконання програми з двома нульовими коефіцієнтами

Завдання 2
1 Додайте в програму перетворення типів при використанні функції sqrt ().
2 Передбачте введення цілочисельних коефіцієнтів квадратного рівняння,
використовуючи тип int. У звіт вставте можливий результат виконання програми.
3 Напишіть програму введення дійсних чисел і виведення абсолютного значення цього
числа на основі конструкції if-else.

Приклад 3. Напишіть програму класифікації введеного з терміналу символу на основі


конструкції if-else if-else.
Символи (одиночні) будемо вважати як малі та великі літери латинського алфавіту, цифри
від 0 до 9, і спеціальні символи.

Програмний код рішення прикладу:

Результат виконання програми показаний на рис. 3.3.

Рис. 3.3. Результат класифікації символу


Завдання 3

1 Сформуйте одну умову введення літер як прописних, так і малих з наступним виводом:
This is an alphabetic character.
2 Напишіть програму циклічного введення символів і виведення результату їх класифікації
до моменту натискання цифри 10 * Х, де Х - номер комп'ютера, за яким виконується
лабораторна робота.

Приклад 4. Напишіть програму розрахунку простого арифметичного виразу на основі


оператора switch.

Програмний код рішення прикладу:

У програмі використана повна форма оператора switch. Оператор break ініціює негайний
вихід з оператора switch. Можливе використання вкладених операторів switch.
Можливий результат виконання програми показаний на рис. 3.4.

Рис. 3.4. Розрахунок простого арифметичного виразу


Завдання 4

1 Перевірте ділення числа на нуль і введення неприпустимого символу.


2 Застосуйте умову рівності нулю числа, що вводиться без знака "==".
3 Напишіть програму розрахунку простого виразу за допомогою конструкцій if-else if-else.
4 Напишіть програму ділення доби на "Morning" (ранок), "Day" (день), "Afternoon"
(післяобідній час), "Evening" (вечір), "Night" (ніч). Час введення задається користувачем з
клавіатури.

Приклад 5. Напишіть програму обчислення двох цілих випадкових чисел і визначення


найбільшого з них. Визначення найбільшого числа зробіть за допомогою оператора
умови?

Програмний код рішення прикладу:

У програмі використані функції генерації псевдовипадкових чисел rand () і завдання


вихідного псевдовипадкового числа srand (). Зазначені функції входять в стандартну
бібліотечну функцію stdlib.h. Функція time () входить до бібліотечну функцію time.h, яка
підтримує функції, які звертаються до системного часу. Для змінних L і some виконано
приведення типів.
При кожному зверненні до функції rand () повертається ціле в інтервалі між нулем і
значенням RAND_MAX, яке в будь-якій реалізації повинно бути не менше числа 32 767
Можливий результат виконання програми показаний на рис. 4.5.

Рис. 4.5. Результат визначення максимального числа


Завдання 5

1 При виведенні максимального числа передбачте повідомлення про ім'я числа, тобто a
або b.
2 У циклі сформуйте вектор десяти випадкових чисел з інтервалу [0; 10] і виведіть на
дисплей.

Приклад 6. Використовуючи оператор умови? і перемикач switch напишіть програму


визначення часу року по числах що вводиться від 1 до 12, вважаючи, що цифра 1
відповідає січню, цифра 2 - лютому і т.д.

Програмний код рішення прикладу:

У програмі три місяці зими кодуються цифрою 1, три місяці весни-цифрою 2, три місяці
літа - цифрою 3, три місяці осені - цифрою 4. Якщо введена цифра не входить в
цілочисельний інтервал [1, 12], то ця ситуація кодується цифрою 5.

Можливий результат виконання програми показаний на рис. 3.6.

Рис. 3.6. Результат програми з визначення часу року

Завдання 6
1 У програмі замість 5-го пункту, тобто замість case 5, застосуйте операцію default.
2 Напишіть програму визначення часу року без операторів умови?.
Приклад 7. Напишіть програму роздруківки парних цілих чисел від 0 до 30.

У програмі в якості перевірки умови використано ділення за модулем (х%2). Якщо


залишок від ділення числа х не дорівнює нулю, то твердження (оператор, інструкція)
continue передає управління безпосередньо інструкції, що перевіряє умовний вираз, після
чого циклічний процес триває. За допомогою програми виводяться лише парні числа, а
при виявленні непарного числа відбувається передчасний перехід до наступної ітерації
циклу, і функція printf () опускається. Функція printf () включена в тіло циклу оператора for.
Результат виконання програми показаний на рис. 3.7.

Рис. 3.7. Результат виведення парних чисел


Завдання 7

1 У програму дозволити дії підрахунку суми парних чисел.


2 Підрахуйте число ітерацій оператора циклу.
3 У програмі замість циклу for застосуйте цикл while. Поясніть дію інструкції continue.
4 У програмі замість циклу for застосуйте цикл do-while. Поясніть дію інструкції continue.
5 Напишіть програму виведення парних чисел без оператора continue. Підрахуйте число
ітерацій оператора циклу.
6 Зробіть вивід парних чисел з інтервалу від Х до 10*Х, де Х - номер комп'ютера, за яким
виконується лабораторна робота. Підрахуйте суму парних чисел.
7 Змініть умову для виведення парних чисел.

Приклад 8. Напишіть програму підрахунку суми трьох чисел з трьох вкладених циклів і,
якщо сума ділиться без залишку на число 3, то припиніть порівняння чисел і вийдіть з
циклів з наступною роздруківкою цієї суми і доданків. Перший цикл починається з 51 до 1,
другий цикл - з 41 до 1, третій цикл - з 1 до 50. Перший цикл змінюється через 7 одиниць,
другий цикл змінюється на 1, третій цикл змінюється на 7 одиниць.

Програмний код рішення прикладу з оператором goto:


# include <stdio.h>
# include <conio.h>
У програмі використано декрементування (зменшення на одиницю) змінної j у формі -- j.
Змінна i з кожною ітерацією циклу зменшується на 7 одиниць. Змінна k з кожною ітерацією
циклу збільшується на 7 одиниць. Після оператора if включені фігурні дужки для
виконання декількох дій при виконанні заданої умови оператора if.

Результат виконання програми показаний на рис. 3.8.

Рис. 3.8. Ітеративний підрахунок числової суми, що ділиться на 3

Примітка. Оператор goto не можна застосовувати для переходу в тіло циклу, тобто мітка
не повинна бути всередині оператора циклу. Мітка може з'явитися текстуально до або
після оператора goto.

Завдання 8
1 У програму дозволити підрахунок числа ітерацій кожного з циклів.
2 Замість оператора безумовного переходу goto застосуйте оператор break. Провести
також підрахунок числа ітерацій кожного з циклів. Порівняйте з аналогічними
результатами попереднього пункту завдання.
3 У програмі замість операторів for застосуйте оператори while. Виконайте дії двох
попередніх пунктів завдання.
4 Напишіть програму введення символу до тих пір, поки не буде введений заздалегідь
певний символ, наприклад 'w'.. Передбачте відступ від лівого краю дисплея.

Приклад 9. Напишіть програму роздруківки на консоль простих чисел з діапазону від 2 до


N, де N - число, що вводиться користувачем з клавіатури, яка не перевершує, наприклад,
1000.

Як відомо, просте число - це ціле додатнє число більше одиниці, яке не ділиться без
залишку ні на одне інше ціле додатнє число, крім одиниці і самого себе. Одиниця не
вважається простим числом.
Можливий програмний код рішення прикладу:

У програмі за допомогою оператора if здійснюється перевірка правильності введення


даних з клавіатури. Крім того, цим же оператором перевіряється залишок від ділення двох
чисел і умовної істинності, коли змінна ok не дорівнює нулю. За допомогою
препроцесорної директиви define визначається верхня допустима межа для простих
чисел.
Приклад виконання програми показаний на рис. 3.9.

Рис. 3.9. Приклад виведення на консоль простих чисел

Завдання 9

1 У програмі замість оператора циклу for застосуйте оператор while.


2 У програмі прийміть припустиме число Nmax, рівне 9999. Передбачте при цьому
форматований вивід на консоль простих чисел порядково, по 15 чисел в кожному рядку.
Використовуйте тренарний оператор?:.
3 Попередній пункт завдання виконайте за допомогою операторів if, else.
Контрольні питання

1 Як організуються множинні дії в операторі умови if?


2 Який формат запису має тернарний оператор умови?
3 Який оператор умови рекомендується використовувати для програмування меню?
4 У чому відмінність і подібність між операторами break і continue?
5 Як можна забезпечити вихід із вкладених циклів?
6 Як можна організувати переходи в різні точки програми на С?
7 Які логічні оператори відношення використовуються в мові С?
8 Що відбудеться, якщо в операторі switch після мітки case не використовувати оператор
break?
9 Що відбудеться, якщо в операторі switch чи не поставити мітку default і умова
перемикання не співпаде з жодною міткою case?

You might also like