Библиотека задач по C++ | тесты, код, задания
5.23K subscribers
576 photos
1 video
162 links
Задачи и тесты по C++ для тренировки и обучения.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/7a480301

Работать у нас: https://job.proglib.io/

Наши каналы: https://yangx.top/proglibrary/9197
加入频道
Задача Перемещение нулей

🔍 Условие
• Необходимо перенести все нули в конец массива, не меняя порядок следования ненулевых элементов
• Сделать всё надо in-place (на том же самом массиве)

📚 Подход к решению
• Воспользоваться методом двух указателей. Когда один указывает на предыдущий элемент, а другой на следующий. Если предыдущий нулевой, то менять со следующим

#middle #algorithms #tasks

💡Решение
class Solution {
public:
void moveZeroes(vector& nums) {
for (size_t i = 0, j = 0; i < nums.size(); ++i) {
if (nums[i])
swap(nums[i], nums[j++]);
}
}
};
Различие локальной переменной и поля класса с одинаковым именем

Указатель this может быть полезен в случае, когда локальная переменная в методе имеет то же самое имя, что и поле объекта:

void set(int x) { this->x = x; }

Здесь в методе set мы присваиваем полю класса x значение локальной переменной this. Чтобы различить поле класса x и локальную переменную с тем же именем мы используем запись this->x при обращении к полю класса.
Ханойская башня

• Есть три башни. Цель игры состоит в том, чтобы переместить все диски на третью башню, но вы не можете поместить диск большего размера на диск меньшего размера
• Необходимо создать функцию, которая принимает число дисков в качестве аргумента и возвращает минимальное количество шагов, необходимое для завершения игры

Подсказки

• Можно использовать библиотеку <cmath>
• Можно использовать функцию возведения в степень pow

Tower of Hanoi (edabit)

#middle #algorithms #tasks

Решение
#include <cmath>
int towerHanoi(int discs) {
return pow(2, discs) — 1;
}
📋 Windowing method (Метод скользящего окна)

Метод скользящего окна — это подход к решению популярного типа алгоритмических задач

🔍 Принцип работы
• Определите размер окна (количество элементов данных в окне)
• Передвигайте окно по последовательности данных
• Вычисляйте интересующие вас значение
📋 Задача Как найти палиндром

Целое число является палиндромом, если оно читается одинаково как в прямом, так и в обратном направлении. Например, 121 является палиндромом, а 123 — нет

🔍 Условие

• Вернуть true, если x является палиндром и false в противном случае

📚 Подход к решению
• Чтобы понять палиндром это или нет необходимо развернуть число
• Это можно сделать с помощь деления на 10
• При целочисленном делении у нас остаётся число на одну цифру меньше (справа) и в остатке как раз эта цифра
• Цифру из остатка сохраняем
• После того как не осталось цифр в числе собираем новую из остатков (тех цифр которые сохранили

Palindrome Number (leetcode)

#junior #algorithms #tasks

💡Решение

class Solution {
public:
bool isPalindrome(int x) {
if (x < 0) {
return false;
}

long long reversed = 0;
long long temp = x;

while (temp != 0) {
int digit = temp % 10;
reversed = reversed * 10 + digit;
temp /= 10;
}

return (reversed == x);
}
};
Согласно C++ 11, спецификатор noexcept может быть применен к
Anonymous Quiz
16%
Классу
71%
Функции
6%
Переменной
7%
Пространству имен
📋 Задача Простые числа

Создайте функцию, которая находит количество простых чисел до заданного целого числа

📚 Подход к решению
Решето Эратосфена на Си

How Many «Prime Numbers» Are There? (edabit)
Каким будет результат следующего фрагмента кода на C++?
Anonymous Quiz
2%
10.0 5
93%
10 2.5
3%
10.0 5.0
2%
5.0 2.5
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
📋 Изменение букв

- Создайте функцию, которая изменяет буквы на одну вперед (+1) или назад (-1) в соответствии с массивом

📚 Подход к решению
- Главной целью является познакомиться с ASCII-кодировкой символов

Tweaking Letters (edabit)

#junior #algorithms #tasks

💡Решение
std::string tweakLetters(std::string s, std::vector arr) {
for (size_t i = 0; i < arr.size(); i++)
{
int count = arr[i];

while (count) {
s[i] += count;

if (s[i] < 'a') {
count += 'a' — s[i];
s[i] = 'z';
continue;
}

if (s[i] > 'z') {
count -= s[i] — 'z';
s[i] = 'a';
continue;
}
count = 0;
}
}
return s;
}
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы

#️⃣C#

Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel

☁️DevOps

Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования

🐘PHP

Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие профильные каналы

Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика

💼Каналы с вакансиями

Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *

* Организация Meta запрещена на территории РФ
Что будет выведено при запуске кода?
Anonymous Quiz
10%
5, 10
70%
1, 11
12%
1, 3
8%
4, 11
💡 Вышла четвёртая часть перевода туториала по Xv6

xv6 — это учебная реализация шестой версии Unix. В ней рассмотрены разные аспекты работы операционных систем. Но, самое полезное здесь заключается в том, что к ней есть список лабораторных работ, которые и дают сильный буст в понимании систем в общем и Linux (Unix) в частности

📚 Сами статьи

Xv6: учебная Unix-подобная ОС. Глава 1: Интерфейсы операционной системы
Xv6: учебная Unix-подобная ОС. Глава 2. Устройство операционной системы
Xv6: учебная Unix-подобная ОС. Глава 3. Таблицы страниц
Xv6: учебная Unix-подобная ОС. Глава 4: Прерывания и системные вызовы
Ответьте на 3 вопроса, чтобы получить вводные занятия к курсу «Алгоритмы и структуры данных»

🔥Получите вводные занятия, ответив на 3 вопроса – https://proglib.io/w/447880e9

На вводной части вас ждут:

1. Лекция «Производительность алгоритмов» от руководителя разработки Яндекс.Самокатов

2. Лекция «Итеративные сортировки и линейные сортировки» от аспирант департамента искусственного интеллекта ВШЭ

3. Практические задания после лекций

4. Ссылки на дополнительные материалы для самостоятельного изучения

⚡️Переходите и начинайте учиться уже сегодня – https://proglib.io/w/447880e9
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Курс Эффективное использование С++

📚 Лекция 1. Начнем с основ: библиотеки, утилиты, средства разработки и сборка проектов в С++. Присоединяйтесь, чтобы узнать, как максимально эффективно использовать ресурсы вашего проекта!

🔍 Лекция 2. Глубже в тему работы с памятью: избегаем утечек ресурсов с помощью RAII и умных указателей. Узнаем, как управлять памятью без лишних хлопот

➡️ Лекция 3. Переходим к Move semantics, rvalue reference и perfect forwarding. Открываем новые возможности и улучшаем производительность нашего кода

🔄 Лекция 4. Обсудим callbacks: лямбда-выражения, bind и function. Узнаем, как делать наш код более гибким и модульным

🧵 Лекция 5. Многопоточность в C++. Разбираемся с потоками, блокировками, задачами, атомарными операциями и очередями сообщений

💡 Лекция 6. Обзор возможностей современных стандартов C++. Узнаем, какие новшества есть в мире С++ и как они могут улучшить наш код

👉 Ссылка на курс
🔮 Задача FizzBuzz

Сама по себе задача не сложная для решения, но она очень популярная и поэтому о ней стоит знать

Подход к решению
- Можно решить с помощью операторов ветвления
- Для конвертации int в std::string можно использовать std::to_string(...)

Решение

#include <string>

using namespace std;
string fizzBuzz(int num){
if (num % 3 == 0 and num % 5 == 0) {
return «FizzBuzz»;
} else if (num % 3 == 0) {
return «Fizz»;
} else if (num % 5 == 0) {
return «Buzz»;
} else {
return std::to_string(num);
}
}