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

Свидания с отличиями

Казуальные, Головоломки, Новеллы

Играть

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

  • AlexKud AlexKud 38 постов
  • Animalrescueed Animalrescueed 36 постов
  • Oskanov Oskanov 7 постов
Посмотреть весь топ

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

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

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

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

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

Сказ о том, как я тетрис консольный написал⁠⁠

Сел и написал. Ссылки в приложении. Конец

Пост Скриптум
Сидел, перечитывал, чтобы посмеяться, свои старые комментарии (потому что я очень остроумный конечно же) (а ещё красивый и певец). Наткнулся на комментарий, за который меня заминусили, словил обидку и решил написать этот пост.
Сам коммент:

#comment_176385292

К сути.

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

Сказ о том, как я тетрис консольный написал Программирование, C++, Тетрис, Консольные игры

Думаю, код кривой, не оптимизирован и возможно есть утечка памяти 0_о.
Но он работает. Собсно, это то, что я и хотел донести. Абсолютно любой человек может написать простенькую программу. Так же, как любой может нарисовать картину. Да, это будет не шедевр, но это возможно.


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


В планах.
Добавить меню с возможностью выбора уровня.
Добавить паузу.

Вшить майнер.


Приложение.
cpp файл: https://yadi.sk/d/YoE6YC9HTf_bJA

exe файл: https://yadi.sk/d/p9OJ6mTX1nADTQ (Управление: стрелочки и кнопки "A" "D")

Показать полностью 1
[моё] Программирование C++ Тетрис Консольные игры
12
5
0xbee9dea1
0xbee9dea1
5 лет назад

Pimpl⁠⁠

Pimpl Программирование, Battletoads, C++, Профессиональный юмор

Зануда-mode on

Pimpl - идиома C++ для разделения интерфейса и реализации и уменьшения зависимости пользовательского кода от изменений в реализации.


Pimple - один из протагонистов во франшизе Battletoads.


Идиома распространённая (например, Qt), но не без недостатков, а именно немного усложняется поддержка. Накладные расходы на поддержку:

- нельзя использовать в header-only библиотеках (нужна выделенная единица трансляции);

- "дублирование" функций (forwarding functions) в классе-обёртке;

- отдельный механизм для выделения и освобождения скрытых за указателем объектов;

Зануда-mode off


Всем, кто начинает изучать c++, посвящается...

Показать полностью 1
[моё] Программирование Battletoads C++ Профессиональный юмор
4
7
DockedFerret800
5 лет назад

Про указатели в C++⁠⁠

Всех приветствую. Решил я написать про указатели, так как многие не понимают зачем они нужны.

Что такое указатель?

Указатель - это объект, содержащий в себе адрес на другой объект.

Как создать указатель?

Если вы хотите указывать на какую-то переменную достаточно написать так:


int v = 10; // Просто переменная типа int
int* ptr_v = &v; // Указатель на переменную v

В первой строке мы создаём обычную переменную. Во второй строке мы создаём указатель на эту переменную. Обратите внимание, что тип указателя должен быть таким же как и тип данных той переменной, на которую вы собираетесь указывать. Через оператор "&" мы произвели операцию взятия адреса. То есть выглядит всё примерно так:


int v = 10; // Значения появляется по адресу, который выделит система. Например 0x005EF778
cout << &v << endl; // Будет выведено 005EF778
int* ptr_v = &v; // в ptr_v будет 005EF778

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

Выделение памяти в C++ можно сделать при помощи оператора new.

После выделения памяти вам обязательно нужно её освобождать. Освобождение памяти в C++ можно сделать при помощи оператора delete.


int* ptr = new int(10); // выделяем память и кладём туда значение 10
cout << ptr << endl; // Выводим адрес
cout << *ptr << endl; // Производим операцию разыменование. Ниже объясню что это
delete ptr; // Удаляем указатель. Так мы освобождаем память, выделенную оператором new

Аналоги new и delete в языке C

int* ptr = (int*)malloc(sizeof(int)); // new
free(ptr); // delete

Разыменование

Разыменование - это операция взятия значения по адресу, при помощи оператора "*" (звёздочка).

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


int* ptr = new int(10);
cout << ptr << endl; // Вывод 012CFF90
cout << *(int*)(0x012CFF90) << endl; //Привели к указателю на int и разыменовали. Вывод будет 10
delete ptr;
Примечание:
В вашей практике, скорее всего никогда не будет кода с фиксированным адресом.

Разыменовывая указатель и присваивая туда значение, значение в переменной, на которую указывает указатель, будет также изменено!

int a = 10;
int* ptr_a = &a;
cout << a << endl; // 10
cout << *ptr_a << endl; // 10
*ptr_a = 5;
cout << a << endl; // 5
cout << *ptr_a << endl; // 5

Функции и указатели в параметрах.

Многие функции возвращают несколько ответов сразу.

Для примера возьмём функцию из WinAPI GetCursorPos.

Эта функция вернёт нам координаты курсора на экране.

Рассмотрим её прототип:


BOOL GetCursorPos(
LPPOINT lpPoint
);

Мы видим, что возвращаемое значение типа BOOL.

Смотрим в документации пункт "Return value"

Type: BOOL
Returns nonzero if successful or zero otherwise. To get extended error information, call GetLastError.

То есть если функция завершится успешно, то мы получим значение не 0.

Но как же мы должны получить координаты курсора?

Смотрим что такое LPPOINT.

Про указатели в C++ C++, Указатель, Программирование, Длиннопост

Видим, что это указатель на структуру POINT.

POINT position;
POINT* ptr_position = &position;
GetCursorPos(ptr_position);
cout << position.x << ":" << position.y << endl; // Выведутся координаты курсора
cout << ptr_position->x << ":" << ptr_position->y << endl; // Всё также выведутся координаты курсора.

Упрощаем код и получаем следующее:


POINT position;
GetCursorPos(&position);
cout << position.x << ":" << position.y << endl;
Примечание:
BOOL это псевдоним int. Если навести на BOOL можно увидеть следующее:
typedef int BOOL

Нулевой указатель. nullptr.

int* ptr = nullptr;
cout << ptr << endl; // Вывод 0000000
//cout << *ptr << endl; // Так нельзя. Будет исключение, в котором скажут, что ptr указывал на nullptr

На этом всё. Я показал только указатели на переменные. Но бывают также указатели на функции, но об этом в другой раз.

Источник: https://gameoxygen.space/threads/432/
Показать полностью 1
[моё] C++ Указатель Программирование Длиннопост
47
79
Dildodemon
Dildodemon
5 лет назад

Ошибки⁠⁠

Ошибки
Python C++ Программирование IT юмор Си Картинка с текстом Мат
20
178
smirserr
smirserr
5 лет назад
IT-юмор

Приходи к нам программировать. У нас есть...⁠⁠

Приходи к нам программировать. У нас есть...
[моё] Юмор Программирование C++ Приходите к нам
46
DockedFerret800
5 лет назад

Работа с файлами в C++⁠⁠

Большинство программ работают с файлами. Нужно читать, записывать, и многое другое. Для этого в C++ есть замечательная библиотека "fstream"

Под файлом понимается некоторая последовательность байтов, которая имеет своё, уникальное имя, например file.txt.

Файловый ввод аналогичен стандартному вводу, единственное отличие – это то, что ввод выполнятся не на экран, а в файл. Если ввод на стандартные устройства выполняется с помощью объектов cout, то для организации файлового ввода достаточно создать собственные объекты, которые можно использовать аналогично оператором cout.

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



C++:

#include <fstream>



Например, необходимо создать текстовый файл и записать в него строку "Hello World!". Для этого необходимо проделать следующие шаги:

создать объект класса ofstream;

связать объект класса с файлом, в который будет производиться запись;

записать строку в файл;

закрыть файл.

Запись файл

Для начала создадим объект.



C++:

ofstream test; // ofstream имя объекта;



Далее нам необходимо связать объект с файлом, или же открыть файл. Если программа не найдет файл,она его создаст.

C++:

test.open("test.txt"); // название вашего объекта.open("название вашего файла.txt");



Далее нам необходимо что-то записать в файл. Делается это почти как в cout.


C++:

test << "Hello world!"; // Имя объекта << значение;



Так же в качественном коде нужно закрыть файл.

Код:

test.close(); // Имя файла.close();


Объединим весь код и получим следующую программу.


C++:

#include <fstream>

using namespace std;

int main()

{

ofstream test;

test << "Hello World!";

test.close();

}



Чтение файла

Для того чтобы прочитать файл понадобится выполнить те же шаги, что и при записи в файл с небольшими изменениями:

создать объект класса ifstream и связать его с файлом, из которого будет производиться считывание;

прочитать файл;

закрыть файл.

Тут я уже не буду все разжевывать, но оставлю Коментарии.


C++:

#include <fstream>

#include <iostream>

using namespace std;

int main()

{

char buff[50]; // буфер промежуточного хранения считываемого из файла текста

ifstream test; // ifstream имя файла; // Создаем объект

test.open("test.txt"); // имя файла.open("имя файла.txt"); // Открываем файл

test >> buff; // считали первое слово из файла

cout << buff << endl; // напечатали это слово

test.close(); // закрываем файл

return 0;

}

Примечание

Шаги 1 и 2 можно объединить, то есть в одной строке создать объект и связать его с файлом. Делается это так:

C++:

ofstream test("test.txt");


Источник - https://gameoxygen.space/threads/433/

Показать полностью
[моё] C++ Программирование Длиннопост Текст
15
Chasotcka
5 лет назад

Объектно-ориентированное программирование⁠⁠

Здравствуйте, помогите пожалуйста с решением задания


"Описать класс «треугольники на плоскости». Предусмотреть конструктор создания объектов этого класса, методы вычисления площади и периметра треугольника, высоты в треугольнике для заданного основания и угла для противолежащей стороны, проверки на равенство и подобие двух треугольников."

Мои наработки чуть ниже



#include <iostream>
#include <Windows.h>
#include <string>
#include <math.h>
using namespace std;
class triangle {
protected:
int a;
int b;
int c;
int s;
int p;
int h;
public:
triangle(int a, int b, int c, int s, int p, int h) {
this->a = a;
this->b = b;
this->c = c;
this->s = s;
this->p = p;
this->h = h;
}
double Squar()
s = sqrt(p(p - a)(p - b)(p - c));
p = (a + b + c) / 2;
return s;
double High()
(ch)/2=s=>h=(2s)/c
Показать полностью
[моё] C++ Программирование Текст
18
5
Trickenhis
Trickenhis
5 лет назад
Лига образования

Автоцензор. Вывод картинки. OpenCV Hello world⁠⁠

Доброго времени суток. Вот и третья часть цикла образовательных видео по OpenCV. Подразумевается, что вы уже знаете хотя бы основы языка программирования С++. Иначе вряд ли наши видео окажутся актуальными для вас.

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