- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
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;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+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...
+10
void MainWindow::mathFun()
{
if(stringBuffer->indexOf("pi") != -1)
{
int i = stringBuffer->indexOf("pi");
stringArg2->clear();
stringArg2->append( stringBuffer->mid(i+2, stringBuffer->size()));
stringSum->clear();
stringSum->append(QString::number(stringArg2->toDouble() * 3.1415926));
ui->lineEdit->clear();
ui->lineEdit->insert(*stringSum);
qDebug() <<" i=" << i << " size=" << stringBuffer->size();
}
if(stringBuffer->indexOf("log") != -1)
{
int i = stringBuffer->indexOf("log");
stringArg2->clear();
stringArg2->append( stringBuffer->mid(i+3, stringBuffer->size()));
stringSum->clear();
stringSum->append(QString::number(qLn(stringArg2->toDouble())));
ui->lineEdit->clear();
ui->lineEdit->insert(*stringSum);
qDebug() <<" i=" << i << " size=" << stringBuffer->size();
}
if(stringBuffer->indexOf("sqr") != -1)
{
int i = stringBuffer->indexOf("sqr");
stringArg2->clear();
stringArg2->append( stringBuffer->mid(i+3, stringBuffer->size()));
stringSum->clear();
stringSum->append(QString::number(qSqrt(stringArg2->toDouble())));
ui->lineEdit->clear();
ui->lineEdit->insert(*stringSum);
qDebug() <<" i=" << i << " size=" << stringBuffer->size();
}
if(stringBuffer->indexOf("fac") != -1)
{
int i = stringBuffer->indexOf("fac");
stringArg2->clear();
stringArg2->append( stringBuffer->mid(i+3, stringBuffer->size()));
stringSum->clear();
long long j = 1;
for(int k = 1; k <= stringArg2->toInt(); ++k)
{
if(stringArg2->toInt() == 0)
{
ui->lineEdit->insert(QString::number(0));
return;
}
j *= 1 * k;
}
stringSum->append(QString::number(j));
ui->lineEdit->clear();
ui->lineEdit->insert(*stringSum);
qDebug() <<" i=" << i << " size=" << stringBuffer->size();
}
if(stringBuffer->indexOf("pow") != -1)
{
int i = stringBuffer->indexOf("pow");
stringArg1->clear();
stringArg1->append( stringBuffer->mid(0, i));
stringArg2->clear();
stringArg2->append( stringBuffer->mid(i+3, stringBuffer->size()));
stringSum->clear();
stringSum->append(QString::number( pow(stringArg1->toDouble(), stringArg2->toDouble())));
ui->lineEdit->clear();
ui->lineEdit->insert(*stringSum);
qDebug() <<" i=" << i << " size=" << stringBuffer->size();
}
if(stringBuffer->indexOf("exp") != -1)
{
int i = stringBuffer->indexOf("exp");
stringArg2->clear();
stringArg2->append( stringBuffer->mid(i+3, stringBuffer->size()));
stringSum->clear();
stringSum->append(QString::number(exp(stringArg2->toDouble())));
ui->lineEdit->clear();
ui->lineEdit->insert(*stringSum);
qDebug() <<" i=" << i << " size=" << stringBuffer->size();
}
if(stringBuffer->indexOf("mod") != -1)
{
int i = stringBuffer->indexOf("mod");
stringArg1->clear();
stringArg1->append( stringBuffer->mid(0, i));
stringArg2->clear();
stringArg2->append( stringBuffer->mid(i+3, stringBuffer->size()));
stringSum->clear();
stringSum->append(QString::number(fmod(stringArg1->toDouble(), stringArg2->toDouble())));
ui->lineEdit->clear();
ui->lineEdit->insert(*stringSum);
qDebug() <<" i=" << i << " size=" << stringBuffer->size();
}
stringSum->clear();
stringBuffer->clear();
}
Калькулятор на C++/Qt
+13
/////////////////////////////////////////////////////////////////////////////////////////
template< typename TT_multimap_type >
void copy_val_vect_into_multimap_with_mapped_val_ordering_with_comparator
(
T_val_vect const & val_vect,
TT_multimap_type & multimap,
T_rand_rev_compare_val_with_comparators const & swap_compare_val
)
{
T_insert_with_ordering_in_multimap_with_comparator< TT_multimap_type >
insert_with_ordering_in_multimap_with_comparator
(
multimap,
swap_compare_val
);
std::for_each
(
val_vect.begin (),
val_vect.end (),
insert_with_ordering_in_multimap_with_comparator
);
}
/////////////////////////////////////////////////////////////////////////////////////////
http://goo.gl/1oiTBt
вырвиглазный code-style
+1
chunksLst.erase(++it1);
+8
if(!(a - b))