JustCaptain kod-buduschego
835a3dbfdce6940e318778c5ce0353de47e5de32
Перейти к файлу
Код
kod-buduschego C++Тема 1.2. Переменные, типы данных и математические операцииНеобходимый материал.md
anc add 1.3. topic 253504b 2 недели назад
Необходимый материал.md

📘 Тема 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;
getline(cin, 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 = (double)a / b;   // 3.5
int t = (int)3.99;          // 3 — дробная часть отбрасывается

Порядок действий#

  1. скобки ( );
  2. *, /, % — слева направо;
  3. +, - — слева направо.
cout << 10 - 4 / 2 << endl;     // 8
cout << (10 - 4) / 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 << (a + b - 1) / b << endl;   // 4 — сколько групп по 5, чтобы вместить 17

6. Математические функции — <cmath>#

#include <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 = pow(side, 3);          // 27
double hyp  = sqrt(3 * 3 + 4 * 4);   // 5

Совет

pow возвращает double. Для целых степеней небольших чисел надёжнее перемножить вручную: x * x * x.

Число π#

const double PI = 3.14;                // если в задаче сказано «π ≈ 3,14»
const double PI_EXACT = acos(-1.0);    // точное значение π

7. Константы#

Значение константы нельзя изменить после объявления.

const int DAYS_IN_WEEK = 7;
const double G = 9.81;

8. min и max#

#include <algorithm>

cout << min(4, 9) << endl;              // 4
cout << max(4, 9) << endl;              // 9
cout << min(min(4, 9), 1) << endl;      // 1 — минимум из трёх
cout << max({4, 9, 1, 7}) << endl;      // 9 — максимум из списка

Предупреждение

Оба аргумента должны быть одного типа: max(5, 2.5) не скомпилируется, а max(5.0, 2.5) — да.


9. Вывод дробных чисел — <iomanip>#

#include <iomanip>

double x = 3.14159;

cout << x << endl;                              // 3.14159
cout << fixed << setprecision(2) << x << endl;  // 3.14
cout << fixed << setprecision(0) << x << endl;  // 3

Заметка

fixed << setprecision(n) задаёт ровно n знаков после запятой и действует на все следующие выводы.


10. Символы char#

Каждый символ хранится как число — его код.

char c = 'A';

cout << c << endl;          // A
cout << (int)c << endl;     // 65
cout << char(c + 1) << 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. Шаблон программы#

#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;

int main() {
    // ввод данных

    // вычисления

    // вывод ответа

    return 0;
}