Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
 Что обсуждали люди в 2024 году? Самое время вспомнить — через виммельбух Пикабу «Спрятано в 2024»! Печенька облегчит поиск предметов.

Спрятано в 2024

Поиск предметов, Казуальные

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

C++ + IT

С этим тегом используют

Программирование IT юмор Программист Python Помощь Картинка с текстом Юмор Работа Разработка Все
210 постов сначала свежее
433
RuSecLife
RuSecLife
1 год назад
IT-юмор
Серия МЕМЫ

Всех с субботой дорогие друзья, хороших всем выходных⁠⁠

Всех с субботой дорогие друзья, хороших всем выходных
[моё] IT Мемы IT юмор Картинка с текстом C++
33
144
tproger.official
tproger.official
1 год назад
Типичный программист

Когда в первый раз используешь «плюсы»:⁠⁠

Когда в первый раз используешь «плюсы»:
IT юмор Программирование Картинка с текстом Программист IT Допрос Плюсы C++ Разработка Код Программа
8
2
DELETED
1 год назад
Лига программистов

Алгоритмы поиска⁠⁠

В программировании одной из наиболее часто встречающихся задач является поиск. При решении таких задач мы исходим из предположения, что группа данных, в которой необходимо найти заданный элемент, является фиксированной.
Пример: Пусть задан массив из n элементов array[0...n-1]. Обычно items описывает запись с некоторым полем, выполняющим роль ключа. Задача заключается в поиске элемента, ключ которого равен заданному аргументу поиска x (a[i], key = x). Полученный в результате i, удовлетворяющий условию a[i] = key = x, обеспечивает доступ к другим полям обнаруженного элемента. Так как нас интересует в первую очередь сам процесс поиска, а не обнаруженные данные, то мы будем считать, что тип item включает только ключ (item = key).
1. Линейный поиск
Линейный поиск заключается в простом, последовательном просмотре массива с увеличением шаг за шагом той его части, где желаемого элемента не обнаружено. Условием окончания поиска является либо нахождение элемента, либо просмотр всего массива без обнаружения совпадений. Этот метод просто проверяет каждый элемент массива по очереди, пока не найдет искомый элемент или не просмотрит весь массив.

Линейный поиск
int i = 0;
const int n = 100;
int arr[n] = {...};
int x;
cin >> x;
while((i < n) && (arr[i] != x)) {
i += 1;
}
2. Линейный поиск с барьером
При линейном поиске на каждом шаге требуется вычислять логические выражения и увеличивать индекс. Чтобы увеличить скорость поиска, можно упростить само логическое выражение. Это можно сделать, если мы гарантируем, что совпадение всегда произойдет. Для этого в конец массива достаточно поместить дополнительный элемент x. Такой вспомогательный элемент называется барьером. Он охраняет нас от перехода за пределы массива. Этот метод упрощает линейный поиск, добавляя искомый элемент в конец массива. Это гарантирует, что поиск всегда будет успешным, и упрощает условие окончания поиска.
const int n = 100;
int arr[n] = {0...n};
int x;
cin >> x;
arr[n] = x;
int i = 0;
while (arr[i] != x) i += 1;
3. Бинарный поиск
Для рассмотрения алгоритма мы будем считать, что массив будет заранее упорядочен, то есть удовлетворяет условию 1 <= k < N; a[k-1] <= a[k]. Основная идея алгоритма выбрать случайно некоторый элемент, предположим a[m] и сравнить его с аргументом поиска x. Если он равен x, то поиск заканчивается. Если меньше x, то мы заключаем, что все элементы с индексами <= m можно исключить из дальнейшего поиска. Это соображение приводит нас к алгоритму, который называется поиск делением пополам. Этот метод использует преимущество отсортированного массива, чтобы ускорить поиск. Он выбирает элемент в середине массива и сравнивает его с искомым. Если элемент в середине меньше искомого, то поиск продолжается в правой половине массива. Если элемент в середине больше искомого, то поиск продолжается в левой половине массива. Этот процесс повторяется, пока не будет найден искомый элемент или пока не останется непроверенных элементов.
int n = 100, left = 0, right = n - 1;
int arr[n] = {0...n};
int x;
bool found = false;

cout << "Введите число для поиска: ";
cin >> x;

while(left <= right && !found) {
int m = (left+right)/2;
if(arr[m] == x) {
found = true;
cout << "Число найдено на позиции: " << m << endl;
}
else if(arr[m] < x) left = m + 1;
else right = m - 1;
}

if(!found) {
cout << "Число не найдено." << endl;
}

Бинарный поиск
Эффективность алгоритма можно несколько улучшить, если поменять местами заголовки условных операторов. Проверку на равенство можно выполнить во вторую очередь, так как она встречается лишь единожды и приводит к окончанию работы.
Поиск в таблице
Поиск в массиве = поиск в таблице. Особенно если ключ сам является составным объектом, таким как массив чисел или массив символов. Часто встречается поиск символов, когда массив символов называют строками или словами. Строковый тип определяется так, string = char arr[0...n-1]. Для установки факта совпадения, мы должны убедиться, что все символы сравниваемых строк соответственно равны один к другому, поэтому сравнение составных операндов сводится к поиску их на неравенство. Если нет не равных частей, то это равенство. Чаще всего используется 2 представления о размерах строк. 1) Размер указывается неявно, благодаря добавлению кольцевого символа, который больше нигде не употребляется. Обычно используется непечатаемый символ со значением 0C ('/0') (минимальный символ из всех символов). 2) Размер явно хранится в качестве первого элемента массива, то есть строка s имеет вид s = s0, s1, ..., s(n-1). Эти символы являются фактическими в строке, а s0 = char(n) (определяет размер строки). Этот метод аналогичен поиску в массиве, но применяется к строкам. Здесь мы ищем подстроку в строке, сравнивая каждый символ подстроки с соответствующим символом строки.
Задача: упорядоченная таблица T (в алфавитном порядке); Аргумент поиска = x (string); T = string arr[0...n-1]. N достаточно велико.
int n = ...; // Замените на конкретное значение
string arr[n] = {...}; // Замените на конкретные значения
string x;
int l = 0, r = n;

cout << "Введите строку для поиска: ";
cin >> x;

while(l < r) {
int m = (l + r) / 2;
if(arr[m] == x) {
cout << "Строка найдена на позиции: " << m << endl;
break;
}
else if(arr[m] < x) l = m + 1;
else r = m;
}

if(l == r) {
cout << "Строка не найдена." << endl;
}

Прямой поиск строки
Пусть задан массив s из n элементов. И задан массив p из m элементов. 0 < m <= n. s: array[0...n-1] of item, p: array[0...n-1] of item. Поиск строки обнаруживает первое вхождение p в s. Обычно item это символы, то есть их можно считать некоторым текстом, а p является образом или словом. Мы хотим найти первое вхождение в слово. Рассмотрим прямолинейный поиск алгоритма. Поиск можно представить, как повторяющие сравнения. Этот метод ищет первое вхождение подстроки в строке, сравнивая каждый символ подстроки с соответствующим символом строки.
string P = "..."; // Замените на искомую строку
string T = "..."; // Замените на текст, в котором ищем
int M = P.size();
int N = T.size();
bool found = false;
for(int i = 0; i <= N - M && !found; i++) {
int j = 0;
while(j < M && T[i + j] == P[j]) {
j++;
}
if(j == M) {
found = true;
cout << "Строка найдена на позиции: " << i << endl;
}
}
if(!found) {
cout << "Строка не найдена." << endl;
}

Алгоритмы поиска Алгоритм, IT, Программист, C++, Гифка, Длиннопост
Алгоритмы поиска Алгоритм, IT, Программист, C++, Гифка, Длиннопост
Показать полностью 2
[моё] Алгоритм IT Программист C++ Гифка Длиннопост
26
71
DevComics
DevComics
1 год назад
IT-юмор

Теперь понятно в чем разница Java и JavaScript⁠⁠

Теперь понятно в чем разница Java и JavaScript Перевел сам, Перевод, IT, IT юмор, Telegram (ссылка), Картинка с текстом, C++

Телеграм: @DevComics

Показать полностью 1
Перевел сам Перевод IT IT юмор Telegram (ссылка) Картинка с текстом C++
32
55
tproger.official
tproger.official
1 год назад
Типичный программист

У разных языков разное отношение к указателям:⁠⁠

У разных языков разное отношение к указателям: IT, IT юмор, Программирование, Картинка с текстом, Программист, Указатель, Python, C++, Аватар, Мемы
Показать полностью 1
[моё] IT IT юмор Программирование Картинка с текстом Программист Указатель Python C++ Аватар Мемы
11
1
user4414420
1 год назад

С++ модули⁠⁠

Приветствую. Знаю, что не самое подходящие место. Однако.

Кто-нибудь уже пробовал использовать модули из С++20? Как так получается, что фича вышла 4 года назад, компиляторы тоже ± в это время ее начали поддерживать, а в массы она не ушла. Вы знаете какие-нибудь проекты, где используются эти модули? Почему старые, но поддерживаемые проекты не переезжают на них?

Лично их сам ещё не попробовал, но то, что видел, наводит на мысли, что у них нет минусов. Вот прям совсем. Одни плюсы. Может, кроме того, что нужно на них как-то переезжать и набивать руку, т.к. стандартного разделения хедера и сипипишника не предполагается.

Какое у Вас мнение на этот счёт?

IT C++ Текст
6
4
GIMICPP
GIMICPP
1 год назад
Серия Программирование

Консольная игра в кубики⁠⁠

Выкладываю по желанию дорогих комментаторов)
Да, я понимаю код который я сегодня написал не такой hard skil(овый), но я старался.
ЯП - С++

#include <iostream>

#include <time.h>

using namespace std;

string player1, player2, restart;

int m = 0, res = 1;

void players()

{

cout << "Введите имя игрока №1: ";

cin >> player1;

cout << "Введите имя игрока №2: ";

cin >> player2;

cout << endl;

}

void grafa()

{

switch (m)

{

case 1:

{

cout << "#####" << endl << "##0##" << endl << "#####" << endl;

break;

}

case 2:

{

cout << "#0###" << endl << "#####" << endl << "###0#" << endl;

break;

}

case 3:

{

cout << "#0###" << endl << "##0##" << endl << "###0#" << endl;

break;

}

case 4:

{

cout << "#0#0#" << endl << "#####" << endl << "#0#0#" << endl;

break;

}

case 5:

{

cout << "#0#0#" << endl << "##0##" << endl << "#0#0#" << endl;

break;

}

case 6:

{

cout << "#0#0#" << endl << "#0#0#" << endl << "#0#0#" << endl;

break;

}

}

}

void game()

{

int playball1 = 0, playball2 = 0;

cout << "[Матч №" << res << "]\n\n";

cout << "Играет " << player1 << ": \n";

for (int i = 1; i < 3;)

{

m = rand() % 6 + 1;

playball1 = playball1 + m;

cout << i << " бросок.\n";

grafa();

i++;

}

cout << player1 << " имеет: " << playball1 << " очков.\n\n";

cout << "Играет " << player2 << ": \n";

for (int i = 1; i < 3;)

{

m = rand() % 6 + 1;

playball2 = playball2 + m;

cout << i << " бросок.\n";

grafa();

i++;

}

cout << player2 << " имеет: " << playball2 << " очков.\n\n";

if (playball1 > playball2)

{

cout << "Игрок " << player1 << " выиграл в этом матче!!!\n";

}

else if (playball1 == playball2)

{

cout << "Игроки " << player1 << " и " << player2 << " сыграли ничью!!!\n";

}

else

{

cout << "Игрок " << player2 << " выиграл в этом матче!!!\n";

}

res++;

}

int main()

{

setlocale(LC_ALL, "ru");

srand(time(NULL));

players();

while (true)

{

game();

cout << "\nЖелаете сыграть по новой? go / stop\n" << "Ответ: ";

cin >> restart;

if (restart == "stop")

{

break;

}

}

}

Ps: Заранее извиняюсь за отсутствие комментариев в коде.

Консольная игра в кубики Программирование, IT, C++, Windows, Программист, Программа, Разработка, Длиннопост
Показать полностью 1
[моё] Программирование IT C++ Windows Программист Программа Разработка Длиннопост
7
5
GIMICPP
GIMICPP
1 год назад
Серия Программирование

Изучаю С++. Часть 2⁠⁠

Доброго времени суток дорогие обитатели pikabu.ru!
Во второй части истории своего обучения, хочу рассказать чему я научился и что уже написал, используя ЯП - С++.
Кто в первый раз, прочтите первую часть - Изучение С++, или же как я начинаю вливаться в сферу программирования

1) Спустя месяц - два, чистого обучения Я: До изучил основы языка программирования C++, изучил функции, и преступил изучать указатели.
2) Написал несколько игрушек: Крестики - нолики, Игра в кубики(а-ля кости), и т.п.

Под прошлом постом, мне писали что данный ЯП очень тяжелый и всё в этом духе.
Но что хочу сказать, да нифига!) Данный язык вполне хорошо запоминается и усваивается (Да, я понимаю зависит от человека), но конкретно в моём случае, всё довольно-таки отлично.

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

Что мне нравиться кодить на С++?
Программы. Писать свои программулины это прямо вообще классно! Как я сказал выше, уже появляются идеи - мне бы ещё знаний по больше, хах)

В общем, я продолжаю обучаться, останавливаться не собираюсь!
Хочу поблагодарить многих комментаторов под прошлым постом, многие дали очень нужную информацию к изучению.
Всех Благ!!!)

Ps: Если у кого-то возникнет желание глянуть что я там написал, могу поделиться.)

[моё] C++ Программирование IT Код Windows Программист IT юмор Разработка Программа Текст
9
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии