- 1
- 2
// Пароль админа
const unsigned int AdminPassword = 42;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+28
// Пароль админа
const unsigned int AdminPassword = 42;
Откопал в своем старом коде. Кто тут говорил, что Борманд не говнокодит?
+19
wstring& delphi::IntToStr(int integer, wstring& str)
{
if (0 == integer)
return str = L"0";
str.clear();
wstring sign(L"");
if (integer < 0)
{
sign = L"-";
integer = -integer;
}
else
sign = L"";
while (integer >= 1)
{
str.push_back( (integer % 10) + 48 );
integer /= 10;
}
str += sign;
std::reverse(str.begin(), str.end());
return str;
}
+18
#include <iostream>
#include <memory>
#include <mutex>
#include <condition_variable>
#include <atomic>
typedef ::std::unique_lock<::std::mutex> TLock;
using namespace std;
template<typename T>
class TQueueElement
{
public:
T _data;
std::shared_ptr<TQueueElement<T> > _prev;
mutable ::std::mutex _lockElem;
public:
TQueueElement(T data):_data(data),_prev(nullptr){};
virtual ~TQueueElement(){};
};
template<typename T>
class TQueue
{
private:
mutable ::std::mutex _lockHead;
mutable ::std::mutex _lockTail;
::std::condition_variable _pushToQueue;
std::atomic<bool> _isEmpty;
std::shared_ptr<TQueueElement<T> > _tail;
std::shared_ptr<TQueueElement<T> > _head;
public:
TQueue():_lockHead(),_isEmpty(true){};
virtual ~TQueue(){};
///получаем элемент из очереди
T pop()
{
TLock lock(_lockTail);//блокируем все получения из очереди
if (_tail==nullptr)
{_isEmpty=true; _pushToQueue.wait(lock,[this](){return !_isEmpty;});} //если очередь пуста ожидаем пока в ней чтото появиться
{
TLock lockTail(_tail->_lockElem); //блокируем последний элемент в очереди возможно к нему попробуют обратиться во время запихивания в очередь
auto data=_tail->_data;
_tail=_tail->_prev;
return data;
}
}
void push(T data)
{
auto el=std::shared_ptr<TQueueElement<T> >(new TQueueElement<T>(data));//заранее создаем элемент очереди
TLock lock(_lockHead);
if (_isEmpty)//если очередь пуста говорим что наш элемент пока первый и последний
{
_head=el;
_tail=el;
_isEmpty=false;
_pushToQueue.notify_all();
}else//если очередь не пуста
{
{
TLock lockHead(_head->_lockElem); //блокируем голову от возможного обращения с хвоста
_head->_prev=el; //выставляем ссылку на новую голову у старой
}
_head=el;//выставляем новую голову
}
}
};
int main() {
TQueue<int> q;
q.push(7);
q.pop();
// your code goes here
return 0;
}
https://ideone.com/uGX56M
Ничего не забыл ? Пытался написать очередь для межпоточной синхронизации.
+26
private:
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FieldGenerator);
Корпорация добра.
+14
std::string MakeString(const char* ch)
{
stringstream ss;
for (int i = 0; i < strlen(ch); i++) {
ss<<ch[i];
}
string result = ss.str();
return result;
}
Создание строки
+16
/*
Дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных
латинских букв; между соседними словами - не менее одного пробела, за последним словом - точка.
Напечатать те слова последовательности, которые отличны от первого слова и
удовлетворяют следующему свойству: в слове нет повторяющихся букв.
*/
#include <iostream>
#include <cstring>
using namespace std;
void strComparsion(const char *str1, const char *str2, const int beginStr2, const int endStr2);
int main()
{
char arrWord[50*8+50+1] = "spros na java programmistov"
" rastet i v etom vinovat chertov android.";
int counterSpace = 0; //Счетчик пробелов
char strOneBuffer[9]; //Массив для первого слова
cout << "Na vhode: \n" << arrWord << endl;
cout << "Na vyhode: \n";
//Копируем первое слов в отдельный массив
for(int i = 0; arrWord[i-2] != ' ';i++)
{
strOneBuffer[i] = arrWord[i];
if(arrWord[i] == ' ')
{
strOneBuffer[i] = '\0';
counterSpace = i;
}
}
for(int i = counterSpace + 1, j = counterSpace + 1; arrWord[i] != '\0' ; i++)
if(arrWord[i] == ' ' || arrWord[i] =='.')
{
strComparsion(strOneBuffer, arrWord, j, i);
j = i +1;
}
return 0;
}
void strComparsion(const char *str1, const char *str2, const int beginStr2, const int endStr2)
{
//Флаги
int countSymbol = 0;
int repeatSymbol = 0;
//Сравниваем слова с первым словом
if( strlen(str1) == endStr2 - beginStr2 )
for(int i = 0, j = beginStr2; j < endStr2; i++, j++)
if(str2[j] == str1[i])
countSymbol++;
//Ищем повторяющийся буквы в слове
for(int i = beginStr2; i < endStr2; i++)
for(int j = beginStr2; j < endStr2; j++)
{
if(i == j)
continue;
if(str2[i] == str2[j])
repeatSymbol++;
}
//Выводим слово по требуеиым критериям
if(countSymbol < strlen(str1) && repeatSymbol == 0)
for(int i = beginStr2; i < endStr2; i++)
{
cout << str2[i];
if(i == endStr2 - 1)
cout << " ";
}
}
Это я писал после 6 месяцев изучения кодинга
+25
unsigned char ToChar(const char& c1, const char& c2)
{
static map<char,int> mapping;
mapping['0'] = 0;
mapping['1'] = 1;
mapping['2'] = 2;
mapping['3'] = 3;
mapping['4'] = 4;
mapping['5'] = 5;
mapping['6'] = 6;
mapping['7'] = 7;
mapping['8'] = 8;
mapping['9'] = 9;
mapping['A'] = 10;
mapping['B'] = 11;
mapping['C'] = 12;
mapping['D'] = 13;
mapping['E'] = 14;
mapping['F'] = 15;
return (unsigned char)(mapping[c2] + mapping[c1] * 16);
}
int main()
{
// Assuming "vector<unsigned char> content" stores the data in Hex format, one Hex character per cell.
for(size_t i=0, j=0; i < content.size(); i+=2, j++)
{
content[j] = ToChar(content[i], content[i+1]); // one unsigned char => 2 Hex characters
}
}
Индусы на СО. Я даже не знаю, что тут самое нелепое.
http://stackoverflow.com/a/24470147/2489083
+9
// инверсия цвета
n ~= n;
Было в шаблоне, довольно долго. Сегодня впервые метод был использован... Минут пять втыкал, почему не хочет компилировать.
Всё-равно пришлось заменить на n = 0xFFFFFF ^ n, потому что старший байт нужно было неизменным оставлять.
+10
int getNextCode(int ¤tByte, int codeLen)
{
int nextCode = 0, mask;
mask = (int)pow(2, codeLen) - 1;
if (rest >= codeLen) {
nextCode = currentByte & mask;
currentByte >>= codeLen;
rest -= codeLen;
} else {
int nextByte, temp;
encoded >> std::hex >> nextByte;
if (codeLen <= rest + 8) {
temp = nextByte;
temp <<= rest;
temp += currentByte;
rest = 8 + rest - codeLen;
currentByte = nextByte >> (8 - rest);
} else {
int secondByte;
encoded >> std::hex >> secondByte;
temp = secondByte << (rest + 8);
temp += nextByte + currentByte;
rest = 16 + rest - codeLen;
currentByte = secondByte >> (8 - rest);
}
nextCode = temp & mask;
}
return nextCode;
}
Функция, для декодера *gif . Считывает несколько бит из файла.
+8
{
if(find(p) == board.end() || (*find(p))->suit != (*selected)->suit)[&]
{
{
auto it = std::find_if(board.pieceCapturings().begin(),
board.pieceCapturings().end(),
[&](board::Board::Movements_t::value_type const &m)
{
return m.first == selected && m.second == p;
});
if(it != board.pieceCapturings().end())
{
for(auto jt = board.pieceCapturables().begin(); jt != board.pieceCapturables().end(); ++jt)
{
if(jt->second == p)
{
if(board.capture(selected, it, jt))
{
nextTurn();
return;
}
}
}
}
}
{
auto it = std::find_if(board.pieceTrajectories().begin(),
board.pieceTrajectories().end(),
[&](board::Board::Movements_t::value_type const &m)
{
return m.first == selected && m.second == p;
});
if(it != board.pieceTrajectories().end())
{
if(board.move(selected, it))
{
nextTurn();
}
}
}
}();
selected = board.end(); //deselect
}
https://github.com/cpluspluscom/ChessPlusPlus/blob/master/src/app/ChessPlusPlusState.cpp
When you see it...