Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 13

ЛАБОРАТОРНА РОБОТА № 3

РОЗРОБКА ПРОГРАМ З ОПЕРАТОРОМ ВИБОРУ

 
 
Мета роботи
 Навчитись використовувати оператор вибору switch.
 Оволодіти навичками щодо використання виразів цілого типу та символів у
ролі перемикача оператору вибору switch.
 Дослідити роботу операторів керування: break.
 
 

 
               ТЕОРЕТИЧНІ ВІДОМОСТІ
 
Синтаксис основних операторів
Структура вибору switch switch (<вираз цілого типу або змінна
символьного типу >)
{   
      case <значення_1>:
            <послідовність_операторів_1>;
             break;
      ... ... ... ... ... ... ... 
      case <значення_n>:
            <послідовність_операторів_n>;
         break;
      [default:
            <послідовність_операторів_n+1>;]
}
Оператор розриву break;
 

Рисунок 3.1 – Зображення на схемах операторів вибору


 
  
Приклад простої програми з оператором вибору
Задача. У старояпонскому календарі був прийнятий
дванадцятирічний цикл. Роки всередині циклу носили назви тварин:
пацюка, корови, тигра, зайця, дракона, змії, коня, вівці, мавпи,
півня, собаки і свині. Написати програму, яка за номером року
визначає його назву в старояпонському календарі, якщо відомо,
що 1996 р. був роком щура - початком чергового циклу. Оскільки
цикл є дванадцятирічним, поставимо у відповідність назву року
залишку від ділення номера цього року на 12. При цьому врахуємо,
що залишок від ділення1996 на 12 дорівнює 4.
#include <iostream>

int main()
{
int year;
cout<<" Write year";
сіn >> year;
switch (year % 12)
{
case 0:cout<< "Year monkey"; break;
case 1: cout<< "Year chicken"; break;
case 2: cout<<"Year dog"; break;
case 3: cout<<"Year pig"; break;
case 4: cout<<"Year rat"; break;

default: cout << "Zapys ne virnyy"; break;
}
getch();
return 0;
}
Задача 2
Постановка задачі
1. Видати на екран меню користувача з наступними пунктами:
 
1 - розрахунок функції
2 - знаходження максимального з трьох чисел
3 - рішення задачі
 
2. При виборі певного пункту меню користувач повинен ввести з
клавіатури потрібні початкові дані і отримати відповідь. Якщо вибраний
неприпустимий режим роботи програми, то видати повідомлення про
помилку
 
3. Як функція для першого пункту меню пропонується наступна:
 
 
На екран вивести значення x, с і у з точністю до 3 знаків після коми. 
Перевірити працездатність програми при різних можливих значеннях а (при
а=10 x=11.389, c=13.71, y=-0,466; при a=5 x=0.006, c=12.506, y=2.
 
4. Знаходження мінімального з трьох  чисел виконати за допомогою
оператора IF...ELSE і оператора ? : Видати на екран обидва результат для
порівняння
 
5. Як задача для третього пункту меню пропонується наступна.
До фіналу конкурсу кращого по професії «Фахівець електронного офісу»
були допущені двоє: Іванов і Петров. Змагання проходили в три тури. Іванов
в першому турі набрав M1 балів, в другому – N1, в третьому – P1. Петров –
відповідно M2, N2, P2. Складіть програму, яка визначає прізвище і загальну
суму балів переможця.
 
Виконання роботи
//підключаємо заголовні файли
#include <iostream >
#include <math.h>
#include <conio.h>
 
void main()
{
//описуємо змінну для запам'ятовування вибору з меню
int k;
//видаємо меню на екран і чекаємо вибору від користувача
cout<<"1 - розрахунок функції\n";
cout<<"2 - знаходження мінімального з трьох чисел\n";
cout<<"3 - рішення задачі 3\n";
cout<<"Зробіть вибір: ";
cin>>k;
 
//починаємо аналізувати вибір користувача
switch (k)
{
//якщо вибраний перший пункт меню
case 1: {
    //описуємо змінні
          float а,x,c,y;
    //вводимо початкові дані
          cout<<"Введите значення змінної а: ";
          cin>>a;
  //рахуємо функцію Х
          if (a>=8)x=4+exp(2);
          else x=pow(cos(a),4);
    //рахуємо функцію с 
        c=pow(5*sin(4*x),1/3.0)+12;
 
   //рахуємо функцію У
          if (c>0) y=4*cos(x)-2;
          else if (c==0) y=sqrt(x)+4;
                else y=pow(x,3)/2;
  //виводимо результат
          cout.precision(3);
          cout<<"При a="<<a<<" x="<<x<<", c="<<c<<", y="<<y<<"\n";
   //виходимо з оператора switch
          break;
      }
 
//якщо вибраний другий пункт меню
case 2: {
          //описуємо змінні
          float а,b,c,d;
          //вводимо початкові дані
          cout<<"Введите три числа: ";
          cin>>a>>b>>c;
            //знаходимо максимальне з 3 чисел
          //с допомогою оператора IF...ELSE
          if (a>b)d=a;
          else d=b;
           if (с>d) d=c;
                     //виводимо результат
          cout<<"Максимальное число рівно (1 спосіб): "<<d<<"\n";
            //знаходимо максимальне з 3 чисел
          //с допомогою оператора ?:
          d=(a>b && a>c ? а : (b>a && b>c ? b : c));
          //вивiд результату
          cout<<"Максимальное число рівно (2 спосіб): "<<d<<"\n";
          //виходимо з оператора switch
          break;
      }
//якщо вибраний третій пункт меню
case 3: {
          //описуємо змінні
          float m1,n1,p1,m2,n2,p2;
          //вводимо початкові дані
          cout<<"Введите бали, набрані Івановим в трьох турах: ";
          cin>>m1>>n1>>p1;
          cout<<"Введите бали, набрані Петровим в трьох турах: ";
          cin>>m2>>n2>>p2;
            //визначаємо переможця і виводимо результат
          if (m1+n1+p1 > m2+n2+p2)
                      cout<<"Победил Іванов, набравши "<<m1+n1+p1<<" баллов\n";
          else if (m1+n1+p1 < m2+n2+p2)     
                    cout<<"Победил Петров, набравши "<<m2+n2+p2<<" баллов\n";
   else cout<<"В змаганнях зафіксована ничья\n";
          //виходимо з оператора switch
          break;
      }
//якщо вибраний неприпустимий пункт меню
default :
          //видаємо повідомлення про помилку
          cout<<"Выбран неприпустимий режим роботи программы\n";
}
//робимо паузу для проглядання результату
cout<<"Для продовження натискуйте будь-яку клавішу...";
getch();
}
4. Скласти програми згідно варіанту, записати код у звіт і
побудувати блок-схему для наступної задачі.
5.Оформити звіт з виконання роботи.
Зміст звіту:
- Тема роботи
- Мета роботи
- Постановка задачі згідно варіанту
- Програма
- Результати роботи
- Висновки.

Приклад розробки задачі з використанням оператора вибору


Задача. Написати програму, що визначає, яка з цифрових клавіш була натиснута.
 
Формалізація задачі
 Вхід: цифра. Тип даних – символ.
1.   Вивести запрошення на введення цифри
2.   Перевірити, чи це є цифра.
3.   Якщо цифра, то {4}, інакше {5}.
4.   Bивести рядок з назвою відповідної цифри {6}.
5.   Вивести рядок про помилку {6}.
6.   Завершення програми.
Вихід: рядок з назвою цифри.
 
Лістинг програми
 
    #include <locale.h>
    #include <conio.h>
    #include "stdafx.h"
    int main()
    { setlocale(0,"");
      int ch;
      printf("\nВвед1ть цифру ");
      scanf_s("%d",&ch);
      switch(ch)
      {   case 0: printf("\n %d%s",ch,
          " – нуль"); break;
      case 1: printf("\n %d%s",ch,
          " – один"); break;
      case 2: printf("\n %d%s",ch,
          " – два"); break;
      case 3: printf("\n %d%s",ch,
          " – три"); break;
      case 4: printf("\n %d%s",ch,
          " – чотири"); break;
      case 5: printf("\n %d%s",ch,
          " – п'ять"); break;
      case 6: printf("\n %d%s",ch,
                " – ш1сть"); break;
      case 7: printf("\n %d%s",ch,
          " – с1м"); break;
      case 8: printf("\n %d%s",ch,
          " – в1с1м"); break;
      case 9: printf("\n %d%s",ch,
          " – дев'ять"); break;
      default :
         printf("\n НЕ ЦИФРА!!!");    
          ch='*'; break;
    }
    _getch();
    return 0;
    }
Схема роботи програми
 
 
Результати виконання програми
 
   
   
   
   
 
Порядок виконання роботи
 
 
1. Засвоїти теоретичний матеріал.
2. Розібратись з прикладами та процесом розробки наведеної вище задачі.
3. Згідно з індивідуальним завданням розробити програми, що реалізують
кожну із задач.
4. По кожній задачі підготувати звіт за формою, наведеною у лабораторній
роботі №1 (висновки – загальні для усієї лабораторної роботи).
 

 
Варіанти індивідуальних завдань
 
  
Задача 3.1.  Використовуючи оператор вибору, розробити програму згідно з індивіду-
альним завданням.
 
1 Напишіть програму, яка запитує в користувача номер дня тижня, а
потім виводить назву дня тижня чи повідомлення про помилку, якщо
введені невірні дані (понеділок – 1, …, неділя – 7).
2 Напишіть програму, яка запитує у користувача число, а потім
підносить його до степеню 2, 3, 4 або 5.
3 Написати програму, що підраховує кількість різних цифр у рядку
символів, що вводиться з клавіатури.
4 Написати програму, що підраховує кількість різних символів «a, b, c, d,
e, f» у рядку символів, що вводиться з клавіатури.
5 Напишіть програму, що підраховує пробіли, символи табуляції та
нового рядка у вхідній послідовності символів, що вводяться з
клавіатури.
6 Напишіть програму, що видаляє символ, який визначається
користувачем, із вхідного потоку символів, що вводяться.
7 Напишіть програму, що перетворює літери, які вводяться з клавіатури,
із нижнього регістра у верхній.
8 Для змінних x і y обрахувати вирази, в залежності від операції (+, -,
*, /).
9 Написати програму, яка визначає, у якої фігури площа більша: коло,
задане радіусом, чи квадрат, заданий стороною.
10 Напишіть програму, яка запитує в користувача номер місяця року, а
потім виводить назву місяця або повідомлення про помилку, якщо
введено невірні дані (січень – 1, …, грудень – 12).
11 Напишіть програму, яка запитує в користувача час , а потім виводить
"АМ", якщо введено час до полудня, або "РМ", якшо час після полудня.
12 Напишіть програму, яка підраховує кількість голосних і приголосних
літер у введеному слові або словосполученні.
13 Напишіть програму, яка запитує в користувача номер навчального
урока, а у відповідь виводить час його початку і закінчення.
14 Напишіть програму, яка запитує в користувача цифру, а у відповідь
виводить цю цифру словами.
15 Для змінної x обрахувати вираз в залежності від операції  (х++,  ++х,
х--, --х).
 
3.2 Задача 2

Варіанти завдань:
1.а) площа трикутника S= √ p( p−a)( p−b)( p−c) ,
де p=1/2(a+b+c), a,b,c - довжина сторін трикутника;
б) площа круга
2
S=πr r-радіус, довжина кола L=2πr, площа сфери Scf=4πr2 , об’єм
сфери
V=4/3 πr3
в) площа трапеції
1
S= (a+b )h
2 , де a,b- основи трапеції, h- висота трапеції; периметр
трапеції.
г) площа паралелограма S=ah , де а- основа паралелограма, h - висота
д)площа прямокутника S=ab де a,b- сторони прямокутника, периметр
прямокутника Р.

2.а) Об’єм паралелепіпеда V =abc , де a,b,c – довжини сторін;


2
б) Об’єм циліндра V =πr h , де r - радіус основи циліндра, h-висота;
в) Об’єм прямого кругового конуса
1
V = πr 2 h
3 , де r– радіус основи конуса, h-висота;
4 3
V = πr
г) Об’єм кулі 3 , де r-радіус кулі.

3.а) момент інерції однорідного диска (відносно осі симетрії)


1
J = mR 2
2 , де R- радіус диска;
б) момент інерції однорідного прямого кругового конуса (відносно осі
симетрії):
3
J= mR 2
10 , де R- радіус основи конуса;
в) момент інерції однорідного стержня (відносно осі, що проходить
1 2
J= ml
через центр стержня перпендикулярно до нього); 12 , де l– довжина
стержня;
г) момент інтеграції однорідної кулі (відносно діаметра):
2
J = mR 2
5 , де R- радіус кулі.
Примітка: m- всюди є масою відповідного тіла.

4.а) Сила струму


I=U*R-1
б) Напруга
U=IR
в) Опір
R=U*I-1
г) Провідність
G=I*U-1
д) Потужність
W=I*U.

5.а)площа поверхні параллелепіпеда


S=2(ab+bc+ac), де a,b,c - довжини ребер паралелепіпеда
б) площа сфери
S= 4 πr 2, де r - радіус сфери
в) площа поверхні прямого кругового циліндра
S=2 π r2+2 π rh, де r- радіус основи, h-висота
г) площа поверхні прямого кругового конуса
S= π r2 + π rl , де r- радіус основи, l-довжина твірної;

6.а) сума векторів


zi=xi+yi (i=1,2,3);
б) різниця векторів
zi=xi-yi (i=1,2,3);
в) добуток векторів
zi= λ *xi, (i=1,2,3);
г) скалярний добуток
s=x1y1+x2y2+x3y3;
д) векторний добуток
z1=x2y3-x3y2
z2=x3y1-x1y3,
z3=x1y2-x2y1
Тут x1,y1,z1 i x2,y2,z2 є координати заданих векторів.

7.а) площа трикутника


S= √ p( p−a)( p−b)( p−c) ,
де p=1/2(a+b+c), a,b,c - довжина сторін трикутника;
б) периметр трикутника P=a+b+c;
в) висота трикутника (опущена на сторону a ) ha=2S/a;
1
2
√2(b 2+c 2 )−a2
г) медіана сторони a ma=
2
√ bcp( p−a )
д) бісектриса кута α l α = b+c
8.а) декартові координати точки:
x=r cos φ
y=r sin φ
б) полярні координати точки:
полярний радіус r= x + y √ 2 2

Полярний кут φ (0<= φ <2 π ) обчислюється за різними аналітичними


виразами, в залежності від знаків декартових координат:
y
φ=arctg
-якщо x,y>0, то x ;
1
φ= π
-якщо x=0, y>0, то 2
y
φ=arctg + π
-якщо x<0, то x
3
φ= π
-якщо x=0, y<0 то 2
y
arctg +2 π
-якщо x>0, y<0, то x
-якщо x=0, y=0, то полярний кут невизначений. У цьому випадку
програма повинна виводити відповідне повідомлення.

9.а) відстань між точками на площині


d= √( x 1 −x 2 )2 +( y 1 − y 2 )2
б) відстань між точками у просторі
d= √( x 1 −x 2 )2 +( y 1 − y 2 )2 ( z 1−z 2 )2
в) відстань від точки до прямої на площині
C/¿
d=¿ Ax 1 +By1 + 2 2 ¿
√ A +B
г) відстань між двома паралельними прямими на площині
λ/¿ A1 B1
d=¿C 1−C2 2 2 ¿ λ= λ=
√ A +B , де A 2 або B2 .
Тут A1,B1,C1 i A2,B2,C2 є коефіцієнти рівнянь прямих A 1 x +B 1 y+C1 =0 ,
A 2 x +B 2 y +C2 =0 , a x 1 , y 1 ,z 1 i x ,y ,z -координати заданих точок.
2 2 2
10.а) площа трикутника
1
S= ab sin γ
2 , де γ –кут між сторонами a і b;
√ 2
б)довжина сторони с: с= a +b −2 ab cos γ
2

a
α=arcsin ( sin γ)
в) кут α c
В останніх двох формулах довжину сторони с потрібно попередньо
знайти за формулою пункту б).

ν2
h=
11.a) висота підйому тіла, кинутого вертикально вгору: 2g
б) початкова швидкість тіла, кинутого вертикально вгору, висота
підйому якого дорівнює h: ν=√2 gh

в) час підйому тіла:


τ=
1
√ 2g
h
h= gτ 2
г) висота підйому тіла: 2
Примітка: Прискорення вільного падіння g=9,8 м/сек2.

12.а) довжини сторін b і c i кут α трикутника


sin β sin γ
b=a c=a
sin( β +γ ) , sin ( β+γ ) , α =π−( β+ γ )
б) довжина сторони c і кути α i β тркутника
a b
с=√ a +b −2 ab cos γ
2 2 α=arcsin ( sin γ ) β=arcsin ( sin γ )
, c , c
в) кути трикутника, заданого трьома сторонами
b2 +c 2−a2 a
2
+ c
2
−b
2
α=arccos( 2bc ) β=arccos( )
, 2 ac ,.
2 2 2
a +b −c
γ =arccos( )
2 ab

e= √ a2 −b2
13.а) ексцентриситет еліпса a

б) відстань між фокусами еліпса f =2 √ a −b


2 2

2
в) фокальний параметр еліпса p=b /a
2
г) велика піввісь еліпса a=p /(1−e )
p
b=
д) мала піввісь еліпса √1−e .
14.а) сумарний опір при послідовному з’єднанні двох резисторів
R=R 1 + R2
б) сумарнийопір при паралельному з’єднанні двох резисторів
R 1 R2
R=
R1 + R 2
в) сумарний опір з’єднання трьох резисторів (R3 під’єднаний
послідовно до паралельно з’єднаних R1 i R2)
R1 R2 +R 2 R3 ++ R3 R1
R=
R1 + R2
г) сумарний опір з’єднання трьох резисторів (R3 під’єднаний
паралельно до послідовно з’єднаних R1 i R2)
R 1 R 3 + R 2 R3
R=
R 1 +R2 +R 3 .

15.а) ексцентриситет гіперболи f =2 √ a +b ;


2 2

2
b
p=
б) фокальний параметр гіперболи a
p
a= 2
в) дійсна піввісь гіперболи e −1
p
b= 2
г) уявна піввісь гіперболи √e −1 .
16.а) Тіло вільно падає. Визначити пройдений тілом шлях після першої
та другої секунди падіння.
б) Паралалельно з’єднано три задані опори. Який опір з’єднання і
струми у кожній гілці, якщо прикладено напругу U вольт.
в) вввести п’ятизначне ціле числоо. Обчислити суму його чисел.
г) Виконати облік трьох наіменувань товарів, які є на складі. Запитати
про кількість і ціни товарів. Виести інформацію про товари на складі.

17. Бригада із шести робітників може виконати завдання за одну зміну


(8 год).
а) Скільки потрібно робітників щоб щоб це завдання виконати за к
годин.
б) Ввести тризначне ціле число. Визначити суму і добуток крайніх
цифр.
в) Обчислити довжину гіпотенузи та площу прямокутного трикутника
за двома катетами.
г) Обчислити усі висоти прямокутного трикутника за двома катетами.

18.а) обчислити периметр і площу рівнобедреної трапеції за заданими


сторонами.
б) обчислити площу поверхні циліндра, за заданими висотою та
радіусом основи.
в) обчислити об’єм циліндра.
г) обчислити площу круга.

19. Задано координати вершин чотирикутника у площині.


а) Обчислити довжини його сторін.
б) Обчислити довжини його діагоналей.
в) обчислити його периметр.
г) обчислити його площу.

20. Задано координати вершин трикутника.


а) Обчислити висоти.
б) обчислити бісектриси.
в) обчислити медіани.
г) обчислити радіуси вписаного та описаного кола.
 
Контрольні питання
 
 
1. Які оператори відносять до умовних? Наведіть приклади використання
умовних операторів.
2. За допомогою яких символів на схемах позначають умови?
3. Чому слід уникати використання оператора goto?
4. Як можна організувати нескінченні цикли з оператором goto? Наведіть
декілька варіантів і поясніть їх.
5. Як можна вийти з нескінченних циклів?
6. Що відбувається при запуску нескінченного циклу?
7. Чи може оператор циклу не мати тіла? Чому?
8. Які оператори використовують для організації розгалуження у програмах?
9. Наведіть синтаксис і приклад оператору вибору. У яких випадках він
використовується?
10. Чи можна віднести оператор вибору до умовних операторів? Чому?
11. Як перетворити оператор вибору в умовний оператор?
12. Для чого в операторах вибору використовують конструкцію default?
13. Для чого в операторах вибору необхідно використовувати break?
14. Наведіть приклад використання тернарного оператора "?".
15. Для чого служить оператор переривання break ? Наведіть приклад.
 
 

You might also like