C/C++ Ready | Программирование
11.6K subscribers
692 photos
41 videos
334 links
Авторский канал по разработке на C и C++.
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!

Автор: @energy_it

Реклама на бирже: https://telega.in/c/cpp_ready
加入频道
👩‍💻 Рассмотрим подсчёт размера каталога

Разберёмся, как получить суммарный объём всех файлов в папке, применив стандартную библиотеку <filesystem>. Пользователь вводит путь в консоль — быстро и ясно!

Ключевые моменты:

При каждом посещении обычного файла добавляем его размер к общему счётчику (entry.file_size()).

Путь к каталогу спрашиваем у пользователя, валидируем и передаём функции.

Возможные исключения ловим, чтобы программа не падала на недоступных файлах.


Приём пригодится и тем, кто уже работал с <filesystem>, и тем, кто только открывает для себя его удобные API.

📣 C++ Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16🤝134
Безопасно получаем элемент из vector!

Сейчас научимся обращаться к элементу вектора так, чтобы не получить ошибку выхода за границы — без исключений и без падений.

Сначала подключим нужные библиотеки для работы с консолью и стандартным вектором:
#include <iostream>
#include <vector>


Затем создадим простой вектор с несколькими целыми числами, которые будут выступать в роли исходных данных:
std::vector<int> data = {10, 20, 30};


Теперь предположим, что у нас есть индекс, по которому мы хотим получить элемент вектора. Он может быть как корректным, так и ошибочным:
size_t index = 5;


Перед тем как обратиться к элементу по индексу, обязательно проверим, не выходит ли он за допустимые границы вектора. Это защитит программу от ошибки доступа к памяти:
if (index < data.size()) {
std::cout << "Элемент: " << data[index] << '\n';
} else {
std::cout << "Ошибка: индекс вне диапазона\n";
}


Возможный результат при запуске (если индекс выходит за пределы размера вектора):
Ошибка: индекс вне диапазона


🔥 Так ты можешь безопасно обращаться к элементам вектора — без риска краха программы и без try-catch, которые могут быть избыточными в простых случаях.

📣 C++ Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍10🔥5👎1🤝1
Что же выведет консоль?
Anonymous Quiz
10%
A
24%
B
37%
C
29%
D
👍11🔥54
👩‍💻 Числовые вычисления проще, чем кажется!

Стандартная библиотека C++ предоставляет удобные функции для работы с числами: можно легко суммировать значения, считать скалярное произведение, генерировать последовательности или выполнять накопительные вычисления.

📣 C++ Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥45👍76🤝2
😎 Попалась полезная статья — лаконичное руководство, как подружить C++ с REST-сервисами через библиотеку cpr.

В этой статье:

• Быстрый запуск мини-REST-сервера на ASP.NET Web API
• Тестирование CRUD-эндпоинтов через curl
• Установка cpr через vcpkg и полный C++-листинг

🔊 Советую продолжить читать на Habr!


📣 C++ Ready | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍96🔥4
Сохраняем и читаем JSON за пару строк!

Сейчас научимся быстро сохранять и загружать данные в формате JSON с помощью удобной заголовочной библиотеки nlohmann::json. Она не требует сложной установки — достаточно одного файла, и ты сразу можешь использовать удобный синтаксис работы с JSON.

Сначала подключим нужную библиотеку и настроим псевдоним для удобства:
#include <nlohmann/json.hpp>
#include <fstream>
using json = nlohmann::json;


Теперь создадим JSON-объект и сохраним его в файл. Здесь мы вручную записываем пары ключ-значение — это может быть имя, возраст, настройки и что угодно ещё:
json j = {{"name", "Alice"}, {"age", 30}};
std::ofstream("data.json") << j.dump(4);
// 4 — отступы для читаемости


А затем прочитаем этот JSON обратно из файла и выведем нужные поля. Это удобно для загрузки конфигов, пользовательских данных или состояния программы:
json j;
std::ifstream("data.json") >> j;
std::cout << j["name"] << ", " << j["age"] << '\n';


Результат при запуске:
Alice, 30


🔥 Таким образом ты можешь работать с JSON-файлами в C++ — просто, понятно и без лишних зависимостей.

📣 C++ Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥127
This media is not supported in your browser
VIEW IN TELEGRAM
☕️ ISO C++ — это центральный портал официального комитета стандартизации и мирового сообщества!

Он объединяет свежие версии стандартов, отчёты рабочих групп, руководства по современным возможностям языка, календарь профильных мероприятий и подборку авторитетных ресурсов для углублённого изучения C++.

📌 Оставляю ссылочку: isocpp.org

📣 C++ Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
12🤝7🔥4
👩‍💻 Находим дубликаты файлов! (duplicate finder)

Сегодня напишем небольшую консольную утилиту, которая отыщет все файлы-двойники в указанном каталоге.

В этой задаче:

Рекурсивно обходим дерево директорий.

Считаем для каждого файла контрольную сумму CRC32, читая его побайтно.

Выводим лишь те группы, где обнаружено более одного совпадения.


Такой приём часто используют для поиска лишних копий фотографий и документов, оптимизации дискового пространства и контроля резервных копий.

📣 C++ Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥135👍5
Что же выведет консоль?
Anonymous Quiz
24%
A
21%
B
8%
C
47%
D
🔥9👍5
👩‍💻 Сегодня разберем алгоритм Беллмана-Форда — мощный способ поиска путей в графе!

Он находит кратчайшие пути даже при наличии отрицательных весов рёбер в графе.

Ключевые моменты:

Инициализация расстояний: все бесконечны, кроме стартовой вершины.

Повторное обновление: V−1 раз проходим все рёбра.

Проверка цикла: ищем возможные отрицательные циклы.


Алгоритм медленнее Дейкстры, но работает надёжно даже в сложных условиях.

📣 C++ Ready | #алгоритмы
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥328👍5🤝1