Открывается в новой вкладке

Мы всегда на связи

Пишите в любое удобное время:
whatsappvktelegramMAX
Или задайте вопрос через форму:

Мы всегда на связи

Заявка принята!

Мы уже получили заявку и скоро свяжемся. Расскажите немного о ребёнке — так быстрее подберём группу (необязательно).

Спасибо!

Мы свяжемся с вами в ближайшее время.

Учебник по информатике и математике

Структурированные пути обучения: от первых программ до олимпиад и вступительных в топ-школы.
    Темы
    Заниматься с наставником
    прочитали
    3 задачи

    Ввод и вывод в C++

    Оглавление:

    Почти любая программа на C++ начинается с чтения данных и заканчивается выводом ответа. Для этого в стандартной библиотеке есть потоки: cin читает то, что ввёл пользователь, cout печатает на экран.

    Первая программа

    #include <iostream>
    using namespace std;
    
    int main() {
        int a, b;
        cin >> a >> b;
        cout << a + b << endl;
        return 0;
    }
    

    Строка #include <iostream> подключает библиотеку потоков, using namespace std; позволяет писать cin вместо std::cin. Стрелки показывают направление данных: >> — из потока в переменную, << — из выражения в поток.

    Ключевая идея: cin >> a >> b читает два числа, разделённых любым количеством пробелов или переводов строки. Как именно пользователь их набрал — в одну строку или в две — не важно.

    Вывод нескольких значений

    В одну цепочку можно собрать сколько угодно выражений и строк:

    int x = 7;
    cout << "x = " << x << ", x^2 = " << x * x << "\n";
    // x = 7, x^2 = 49
    

    endl и "\n" оба переводят строку, но endl ещё и принудительно сбрасывает буфер вывода. Когда строк выводится много, это заметно замедляет программу, поэтому в олимпиадных задачах лучше писать "\n".

    Чтение строк

    cin >> s для строки string s читает одно слово — до первого пробела. Чтобы прочитать строку целиком, с пробелами, используй getline:

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main() {
        string line;
        getline(cin, line);
        cout << "Вы ввели: " << line << "\n";
    }
    

    Частая ошибка: Если перед getline уже было чтение через cin >>, в потоке остаётся символ перевода строки, и getline вернёт пустую строку. Между ними нужен cin.ignore().

    Дробные числа и точность

    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    int main() {
        double pi = 3.14159265;
        cout << fixed << setprecision(2) << pi << "\n";   // 3.14
    }
    

    fixed включает запись с фиксированным числом знаков после запятой, setprecision(2) задаёт их количество. Оба живут в заголовке <iomanip>.

    Ускорение ввода-вывода

    По умолчанию cin и cout синхронизированы с функциями языка C (scanf, printf), и это делает их медленнее. В задачах, где читаются сотни тысяч чисел, в начале main добавляют две строки:

    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    

    После этого нельзя смешивать cin/cout с scanf/printf в одной программе.

    Совет: Чтобы читать неизвестное заранее количество чисел до конца ввода, используй цикл while (cin >> x) { ... }: он остановится, когда данные закончатся.

    Заметка: Если по условию данные лежат в файлах, потоки заменяют на ifstream и ofstream из заголовка <fstream>, а сам код чтения и записи остаётся тем же.

    Проверь себя

    1.

    Что напечатает cout << 7 / 2 << «n»; если оба числа целые?

    2.

    Какую функцию нужно использовать, чтобы прочитать из ввода строку целиком, вместе с пробелами?

    3.

    Сопоставь инструмент и его назначение.

    cin >> x

    ускорить ввод и вывод

    cout << x

    прочитать одно значение

    setprecision(3)

    три знака после запятой

    ios::sync_with_stdio(false)

    вывести значение

    Поможем подобрать обучение

    Оставьте телефон. Мы перезвоним, поможем выбрать подходящие занятия и ответим на вопросы

    Поможем подобрать обучение

    Заявка принята.

    Мы свяжемся с вами