Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глинський С++.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.26 Mб
Скачать
  1. Команда ?

Команда ? є аналогом команди розгалужен­ня if. Загальний вигляд команди ? такий:

<логічний вираз> ? <команда або вираз 1> : <команда або вираз 2>

Дія команди. Обчислюється значення логічного виразу. Якщо воно істинне, то виконується команда 1 або обчислю­ється вираз 1, інакше - команда або вираз 2.

Задача 2 (про два числа). Ввести два цілі числа. Знайти більше з них.

// Визначення більшого числа

#include <iostream>

#include <conio.h>

using namespace std;

int main()

{

int x,y;

cout<<"Введіть значення x,y\n";

cin>>x>>y;

cout<< "Max =";

x > y ? cout<<x : cout<<y;

getch();

}

Команда ? у разі потреби трактується компілятором як вираз, тому її зручно використовувати у директивах препроцесора, наприклад

#define abs(x) > 0 ? (х); -(х);

Приклад 6. Нехай с = 10.

Тоді після виконання команди х = (с == 3) ? 2 * с : с - 2; отримаємо х = 8, оскільки с не дорівнює 3, і тому тут обчис­люється значення виразу 2.

  1. Команда вибору (switch). Команда вибору має вигляд

switch (<вираз>);

{

case <ознака 1> : <команда 1>; break,

case <ознака N> : <команда N> break;

default; <команда N+1>;

}

Вираз та ознаки мають бути цілочисельні. Оскільки транс­лятор мови C++ може розглядати значення змінних типу char і enum як цілі дані, то на місці виразу та ознак можуть бути сталі цілого, символьного або перераховного типів. На місці ко­манд 1 — N може бути одна команда, декілька або не бути жодної команди. Команда break не є обов’язковою і записуєть­ся у разі потреби. Вона слугує для виходу з команди switch.

Складова частина default: <команда N+1> також може бути відсутня — тоді матимемо коротку форму команди вибору switch.

Дія команди. Якщо значення виразу збігається зі значен­ням ознаки п, то виконується команда з номером n і розгля­дається наступний за нею рядок case і т.д. Для того, щоб припинити дію команди switch, наприклад, після виконання ко­манди n (тобто щоб вийти з цієї команди), записують команду break;. Якщо значення виразу не збігається із жодною з ознак, то виконується команда N+1 або, у випадку короткої форми, наступна команда після команди switch.

Задача 3 (про квитки). Нехай населені пункти позначені номерами від 1 до 8. Вартість одного квитка до конкретного пункту k визначається так:

Скільки коштуватимуть m квитків до населеного пункту, помер k якого вводять з клавіатури?

#include <iostream>

#include <conio.h>

using namespace std;

int main()

{

int k, m; float cina;

cout << "Уведіть номер k населеного пункту і кількість квитків m"<<endl;

cin>>k >> m;

switch (k)

{

case 1 : cina = 22; break;

case 2:

case 3:

case 4: cina = 25; break;

case 5:

case 6: cina = 30; break;

case 7:

case 8: cina = 35; break;

default : cout <<"Дані введено неправильно \n";

cina = 0;

}

cout << m << " квитків до пункту " << k << " коштують ";

cout << cina * m << " грн.";

getch();

}

  1. Команда безумовного переходу goto. Ця команда змі­нює послідовність виконання інших команд шляхом переходу до виконання команди, що має позначку (мітку). Команда пе­реходу має вигляд

goto <позначка>;

Позначка може розміщуватись перед довільною командою у програмі. Вона відокремлюється від команди двокрапкою (:), а саме:

<позначка> : <команда>;

Позначкою може бути лише ідентифікатор, тобто набір допустимих символів, який починається з букви або символу підкреслення (_).

Задача 4 (про квадратне рівняння). Ввести декілька наборів коефіцієнтів квадратного рівняння ах2 + bх + с = 0 і вивести повідомлення: матиме рівняння дійсні корені чи ні?

// Програма Квадратне рівняння

#include <iostream>

#include <conio.h>

#include <math.h>

using namespace std;

int main()

{

float a, b, c, d;

vvid : cout <<"Уведіть коефіцієнти рівняння \n";

cin>> a >> b >>c;

if (a == 0) goto finish; // Якщо a=0, то перейти до позначки finish

d = pow(b, 2) - 4 * a * c; // Інакше обчислити дискримінант

if (d >= 0) cout <<"Це рівняння має корені";

else // Якщо дискримінант від'ємний, то

{

cout <<"Дані введено неправильно \n"; // виводимо відповідні

cout<<"Рівняння дійсних розв'язків не має"; // повідомлення

goto vvid; // Перейти до позначки vvid

}

finish : getch();

}

Зауваження 4. Використовувати команду goto варто лише у ви­няткових випадках, оскільки вона змінює природну послідов­ність виконання команд і робить програму важкозрозумілою.

Задача 5 (про розклад на день). Скласти програму, яка б виводила на екран розклад роботи на тиждень.(повторити перерахунковий тип)

#include <iostream> // Програма Розклад на день

#include <conio.h>

using namespace std;

int main()

{

enum svet {mon, tue, wed, the, fri, sat, sun};

int day;

cout << "Розклад занять на тиждень\n\n";

for (day = mon; day <= sun; day++)

switch (day)

{

case mon : cout << "Понеділок\t Зустріч акціонерів. \n"; break;

case tue : cout << "Вівторок\t Відрядження\n"; break;

case wed : cout << "Середам\t Відрядження\n"; break;

case the : cout << "Четвер\t Відрядження\n"; break;

case fri : cout << "П'ятниця\t Здати звіт Зайти в банк\n"; break;

case sat : cout << "Субота\t Їдемо на рибалку\n"; break;

case sun : cout << "Неділя\t Відвідати батьків. Ввечері йдемо у театр\n";

}

getch();

}

Вправи

  1. Чи істинний складений логічний вираз х <= 8 && х > 3, якщо:

а) х = 0 (відповідь: ні); б) х = 2;

в) х — 10; г) x: = 5; д) x: = 15?

  1. Якого значення (true чи false) набуде вираз х <= 2 || х > 5, якщо:

а) x: = 0 (відповідь: true); б) х = 2;

в) x: = 10; г) ж = 5; д) х = 15?

  1. Запишіть логічний вираз для визначення, чи деяка точка х нале­жить відрізку:

а) [0; 3) (відповідь: х >= 0 && х < 3); б) (-5; 5]; в) [10; 20];

г) [2;14] або [20;25]; д) [4;10] і [8; 12].

  1. Запишіть умову того, що число а: а) парне; б) ділиться без остачі на 3; в) не ділиться без остачі на 3; г) ділиться на 3 і на 5; д) ділиться на 3 або на 5.

  2. Складіть логічні вирази для перевірки, чи е точка (х; у): а) у другій чверті (відповідь: х < 0 && у > 0 ); б) на координатних осях; в) у другій або третій чверті; г) у квадраті зі стороною, що дорівнює 1, побу­дованому на координатних осях у першій чверті; д) у крузі одиничного радіуса з центром у початку координат (підказка: умова належності точ­ки кругу така: х2 + у2 < 1).

  3. Модифікуйте програму Обчислення виразу так, щоб вивести резуль­тати у файл.

  4. Модифікуйте програму Обчислення виразу так, щоб користувач міг вибирати, куди виводити результати: на екран чи у файл.

Вказівка. Використайте, наприклад, команди

cout <<"Виведення результатів: 1 - на екран, 2-у файл";

сcin>>n;

if (n == 1) <виводимо результати на екран>;

else <виводимо результати у файл>;

  1. Складіть логічний вираз для пошуку у бібліотеці деякої книжки за трьома параметрами: видавництво - «Деол», рік видання — 2003, автор - Новосад.

  2. Модифікуйте програму Квадратне рівняння так, щоб можна було розв’язати декілька рівнянь. Наприклад, вводити коефіцієнти доти, доки значення коефіцієнта а не дорівнюватиме нулю.

  3. Складіть програму для розв’язування рівняння ах + b = 0. Передбачте випадки а) а = 0 і b = 0; б) а = 0, b ≠ 0; в) а ≠ 0.

  4. Розв’яжіть задачу № 3 з розділу "Задачі" вашого варіанта. Пе­редбачте виведення результатів на екран і у файл.

  5. Розв’яжіть задачу № 4 вашого варіанта. Передбачте виведення результатів а) на екран; б) у файл.

  6. Розв’яжіть задачу № 4 наступного варіанта. Виведіть результати виконання програми у файл.

  7. Розв’яжіть задачу № 5 свого варіанта. Виведіть результати викопання програми на екран.

1.8.5

3.1