← Повернутися до лекцій

Арифметичні операції та математика

У цій лекції ми навчимося виконувати математичні дії: додавати, віднімати, ділити (і робити це правильно!), а також дізнаємося про "магічний" оператор, який постійно використовують програмісти.

1. Базові арифметичні оператори

У C++ основні математичні дії записуються так само, як і в шкільній математиці, але з невеликими відмінностями в символах.

Операція Символ Приклад Результат
Додавання + 10 + 5 15
Віднімання - 10 - 3 7
Множення * 4 * 2 8
Ділення / 20 / 4 5
Остача від ділення % 10 % 3 1

2. Пастка цілочисельного ділення (Дуже важливо!)

Це найпоширеніша помилка початківців. В C++ результат ділення залежить від типу даних.

  • Якщо ви ділите ціле число на ціле, результат буде цілим.
    Дробова частина просто відкидається (не округлюється, а відсікається!).
  • Щоб отримати дробовий результат, хоча б одне з чисел має бути типу double або float.

Приклад проблеми:

#include <iostream>
using namespace std;

int main() {
    int a = 5;
    int b = 2;
    
    // Помилка початківця:
    double result = a / b;
    // Комп'ютер спочатку ділить 5 на 2 як цілі числа (отримує 2),
    // а потім записує 2 в змінну double. 0.5 втрачено!
    cout << "Результат 5 / 2 (int): " << result << endl; // Виведе 2
    
    // Правильний варіант:
    double correctResult = 5.0 / 2;
    // Або (double)a / b
    cout << "Результат 5.0 / 2: " << correctResult << endl; // Виведе 2.5
    
    return 0;
}

3. Оператор остачі від ділення (%)

Цей оператор працює тільки з цілими числами. Він повертає те, що залишилося після ділення націло.

  • 10 % 3 → 3 вміщується в 10 тричі (3*3=9), залишок 1.
  • 12 % 4 → ділиться без залишку, результат 0.

Де це використовується?

  1. Перевірка на парність: якщо x % 2 == 0, то число парне.
  2. Отримання останньої цифри числа: 123 % 10 дасть 3.

4. Скорочені операції та Інкремент

Програмісти — люди ледачі, тому для частих дій існують скорочення.

Зміна змінної:

Замість score = score + 10; можна написати score += 10;

Це працює для всіх операторів: +=, -=, *=, /=, %=

Інкремент (++) та Декремент (--):

Це збільшення або зменшення значення рівно на 1.

  • x++ — те саме, що x = x + 1.
  • x-- — те саме, що x = x - 1.
int lives = 3;
lives--; // Стало 2
lives++; // Знову 3

Нюанс:

Існує префіксна (++x) та постфіксна (x++) форми.

  • x++ (постфікс): Спочатку використай старе значення, потім збільш.
  • ++x (префікс): Спочатку збільш, потім використовуй нове значення.

5. Бібліотека <cmath>

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

#include <iostream>
#include <cmath> // Підключаємо математичну бібліотеку
using namespace std;

int main() {
    cout << "Степінь (2 в кубі): " << pow(2, 3) << endl; // 8
    cout << "Корінь із 25: " << sqrt(25) << endl; // 5
    cout << "Округлення (ceil): " << ceil(3.2) << endl; // 4 (вгору)
    cout << "Округлення (floor): " << floor(3.9) << endl; // 3 (вниз)
    
    return 0;
}

Практичні завдання до Лекції 3

Виконайте ці завдання в своєму середовищі розробки.

Завдання 1: Конвертер часу

Напишіть програму, яка просить користувача ввести кількість секунд (велике число, наприклад, 4000). Програма має обчислити і вивести, скільки це годин, хвилин і секунд.

Підказка: Використовуйте цілочисельне ділення (/) для годин та оператор остачі (%) для обчислення хвилин і секунд.

  • 1 година = 3600 секунд
  • 1 хвилина = 60 секунд

Завдання 2: Середній бал (Увага на типи даних!)

Користувач вводить 3 оцінки за іспити (цілі числа, наприклад, 10, 12, 10). Програма має вивести точний середній бал (наприклад, 10.6667).

Важливо: Не забудьте, що сума трьох цілих чисел — це ціле число. Як змусити програму поділити це чесно, з дробовою частиною?

Завдання 3: Банкомат

Напишіть програму, яка симулює видачу грошей з банкомату. Користувач вводить суму в гривнях (наприклад, 573 грн), яку хоче зняти. Програма має вивести, скільки купюр по 100 грн, 50 грн, 20 грн та 1 грн отримає користувач.

(Починайте з найбільших купюр).