📘 Тема 1.2. Необходимый материал#
Шпаргалка по переменным, типам данных и математическим операциям.
1. Объявление переменных#
тип имя = значение;
int a = 5;
double price = 99.9;
int x, y, z; // несколько переменных одного типа
Предупреждение
Переменная без начального значения содержит «мусор». Сначала присвойте значение или считайте его через
cin, потом используйте.
2. Типы данных#
| Тип | Что хранит | Диапазон / размер | Пример |
|---|---|---|---|
int |
целые числа | примерно от −2·10⁹ до 2·10⁹ | int n = 42; |
long long |
большие целые числа | примерно от −9·10¹⁸ до 9·10¹⁸ | long long big = 10000000000; |
double |
дробные числа | ~15 значащих цифр | double r = 2.5; |
char |
один символ | 1 байт | char c = 'Z'; |
string |
строка | любая длина | string name = "Иван"; |
bool |
true / false |
1 байт | bool ok = false; |
Заметка
Для
stringнужно подключить#include <string>(в большинстве компиляторов он уже подключается вместе с<iostream>).
Переполнение#
Если результат не помещается в int, получится неверное число.
int a = 100000;
cout << a * a << endl; // неверный результат — переполнение
long long b = 100000;
cout << b * b << endl; // 10000000000
Совет
Если числа могут быть больше ~2·10⁹ (или их произведение может быть таким) — используйте
long long.
3. Ввод и вывод разных типов#
int age;
double height;
char letter;
string word;
cin >> age >> height >> letter >> word;
cout << age << " " << height << " " << letter << " " << word << endl;
16 1.75 A hello
Строка целиком, с пробелами#
cin >> s читает только до первого пробела. Чтобы прочитать всю строку, используйте getline:
string line;
; // "Привет, как дела?"
Склейка строк#
string first = "Код";
string second = "будущего";
cout << first + " " + second << endl; // Код будущего
cout << "Hello, " << first << "!" << endl; // Hello, Код!
4. Арифметические операции#
| Операция | Запись | int: 7 ? 2 |
double: 7.0 ? 2 |
|---|---|---|---|
| сложение | + |
9 |
9 |
| вычитание | - |
5 |
5 |
| умножение | * |
14 |
14 |
| деление | / |
3 |
3.5 |
| остаток | % |
1 |
— (только для целых) |
Целочисленное и дробное деление#
cout << 7 / 2 << endl; // 3 — оба числа целые
cout << 7.0 / 2 << endl; // 3.5 — хотя бы одно дробное
cout << 7 / 2.0 << endl; // 3.5
cout << 1 / 3 << endl; // 0
cout << 1.0 / 3 << endl; // 0.333333
Внимание
Дробь вида
1 / 3в формуле с целыми числами превращается в0. Пишите1.0 / 3.
Приведение типов#
int a = 7, b = 2;
double d = a / b; // 3.5
int t = 3.99; // 3 — дробная часть отбрасывается
Порядок действий#
- скобки
( ); *,/,%— слева направо;+,-— слева направо.
cout << 10 - 4 / 2 << endl; // 8
cout << / 2 << endl; // 3
cout << 20 / 2 * 5 << endl; // 50 — слева направо
Сокращённые операции#
x += 3; // x = x + 3
x -= 3; // x = x - 3
x *= 3; // x = x * 3
x /= 3; // x = x / 3
x %= 3; // x = x % 3
x++; // x = x + 1
x--; // x = x - 1
5. Остаток от деления %#
cout << 17 % 5 << endl; // 2
cout << 20 % 5 << endl; // 0 — делится нацело
cout << 3 % 5 << endl; // 3 — меньшее число целиком остаётся в остатке
cout << 1234 % 10 << endl; // 4 — последняя цифра
cout << 1234 % 100 << endl;// 34 — две последние цифры
Округление деления вверх#
int a = 17, b = 5;
cout << / b << endl; // 4 — сколько групп по 5, чтобы вместить 17
6. Математические функции — <cmath>#
| Функция | Что делает | Пример | Результат |
|---|---|---|---|
sqrt(x) |
квадратный корень | sqrt(16) |
4 |
pow(x, y) |
x в степени y |
pow(2, 10) |
1024 |
abs(x) |
модуль целого числа | abs(-7) |
7 |
fabs(x) |
модуль дробного числа | fabs(-2.5) |
2.5 |
round(x) |
округление до ближайшего целого | round(2.5) |
3 |
floor(x) |
округление вниз | floor(2.7) |
2 |
ceil(x) |
округление вверх | ceil(2.1) |
3 |
trunc(x) |
отбросить дробную часть | trunc(-2.7) |
-2 |
double side = 3;
double area = side * side; // 9
double cube = ; // 27
double hyp = ; // 5
Совет
powвозвращаетdouble. Для целых степеней небольших чисел надёжнее перемножить вручную:x * x * x.
Число π#
const double PI = 3.14; // если в задаче сказано «π ≈ 3,14»
const double PI_EXACT = ; // точное значение π
7. Константы#
Значение константы нельзя изменить после объявления.
const int DAYS_IN_WEEK = 7;
const double G = 9.81;
8. min и max#
cout << << endl; // 4
cout << << endl; // 9
cout << << endl; // 1 — минимум из трёх
cout << << endl; // 9 — максимум из списка
Предупреждение
Оба аргумента должны быть одного типа:
max(5, 2.5)не скомпилируется, аmax(5.0, 2.5)— да.
9. Вывод дробных чисел — <iomanip>#
double x = 3.14159;
cout << x << endl; // 3.14159
cout << fixed << << x << endl; // 3.14
cout << fixed << << x << endl; // 3
Заметка
fixed << setprecision(n)задаёт ровноnзнаков после запятой и действует на все следующие выводы.
10. Символы char#
Каждый символ хранится как число — его код.
char c = 'A';
cout << c << endl; // A
cout << c << endl; // 65
cout << char << endl;// B
char d = '7';
int digit = d - '0'; // 7 — символ-цифра в число
11. Типичные ошибки#
| ❌ Неправильно | ✅ Правильно |
|---|---|
double half = 1 / 2 * x; |
double half = 1.0 / 2 * x; |
int для чисел больше 2·10⁹ |
long long |
cout << "Введите число:"; в задаче |
выводить только ответ |
x % 2.5 |
% работает только с целыми |
max(5, 2.5) |
max(5.0, 2.5) |
Забыли #include <cmath> для sqrt |
подключить нужную библиотеку |
12. Шаблон программы#
using namespace std;
int