- 1
- 2
- 3
- 4
if (mode == MASTER)
Dev_Mode = MASTER;
else
Dev_Mode = SLAVE;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+145
if (mode == MASTER)
Dev_Mode = MASTER;
else
Dev_Mode = SLAVE;
+145
for(i=0;i<=15;i++) {
o=Odd(N[i]);s=Simple(N[i]);//Odd-проверка на нечётность всех цифр, Simple-на простое число
if((o&&s)||(N[i]==3||N[i]==5||N[i]==7))
{
}
else cprintf("%d ",N[i]); //и вот тут замкнуло...но по другому никак)
if(i>n+4) goto exit;//потерялись 4 элемента...
}
лаба..сдам на следующей неделе, в надежде что у препода произойдёт переполнение и поставит, всё-таки всё работает =)
+183
bool or(bool x1, bool x2) {
if (x1 || x2)
return true;
else
return false;
}
Я РЕАЛЬНО видел такой код, написанный на полном серьёзе.
+163
long Date :: ConvertToDays()
{
int M=0,Y=0;
for(int i=2;i<=m_Year;i++)
{
if((i%4 == 0) && (i%100 !=0) || (i%400==0))Y+=366;
else Y+=365;
}
for(i=2;i<=m_Month;i++){
if (i == 1)M=0;else
if ((((m_Year%4 == 0) && (m_Year%100 !=0) || (m_Year%400==0)) && (i == 3)))M+=29;else
if ((((m_Year%4 != 0) || ((m_Year%100 ==0) && (m_Year%400 !=0))) && (i == 3)))M+=28;else
if ((i == 2) || (i == 4) || (i == 6) || (i == 8) || (i == 9) || (i == 11))M+=31;else
if ((i == 5) || (i == 7) || (i == 10) || (i == 12))M+=30;
}
return m_Day+M+Y;
}
Взято с forum.xakep.ru
+159
int makedata(int id,int part,void *d,int datalen,void *buf)
{
//packet struct :
// code = short int, lenght = shotr int, id = int, numofpart = int, data = 1024
int packlen = sizeof(short int)*2 + sizeof(int)*2 + datalen;
char *tbuf = new char [packlen];
char* tbufptr = tbuf;
*((short int *)tbufptr) = data; //first field
(short int *)tbufptr++;
*((short int *)tbufptr) = packlen; //second field
(short int *)tbufptr++;
*((int *)tbufptr) = id;
(int *)tbufptr++;
*((int *)tbufptr) = part;
(int *)tbufptr++;
*((short int *)tbufptr) = datalen;
(short int *)tbufptr++;
memcpy((void*)tbufptr,d,datalen);
buf=tbuf;
return packlen;
}
fileinfo* getask(void *b)
{
fileinfo *fi = new fileinfo();
char *bufptr = (char*)b;
(short int*)bufptr++;
short int plen = *((short int*)bufptr);
(short int*)bufptr++;
fi->numofpart = *((int*)bufptr);
(int*)bufptr++;
fi->filelenght = *((int*)bufptr);
(int*)bufptr++;
int filelen = plen-(bufptr-(char*)b);
fi->filename = new char[filelen];
strncpy(fi->filename,bufptr,filelen);
return fi;
}
Вместо того, что бы воспользоваться структурой, забиваем всё ручками.
+160
int m[3][3]={
{1, 6, 7},
{2, 5, 8},
{3, 4, 9}};
int tmp[3]={m[0][0],m[0][1],m[0][2]}; m[0][0]=m[1][0];m[0][1]=m[1][1];m[0][2]=m[1][2]; m[1][0]=tmp[0];m[1][1]=tmp[1];m[1][2]=tmp[2];
Программа меняет местами 2 строки
+160
for( int b = 0; b < cntblocket; ++b )
{
delete msrLst[b]->record;
delete msrLst[b]->record;
}
Сразу вспоминается: "- А зачем у вас тут два одинаковых jump'а стоять? - А вдруг один не сработает?"
Видимо, совсем не выспался программист ;)
+156
char* setw_c(int width, char* str, const char align){
width = width - strlen(str) / 2;
if (align == 'l'){
std::cout << str;
if (width > 0)
for (int i = 0; i < width - 1; i++)
std::cout << " ";
return " ";
} else {
if (width > 0)
for (int i = 0; i < width; i++)
std::cout << " ";
return str;
}
}
вот так коряво я решил проблему с setw(), кириллицей и utf-8.
strlen() - чуть ли не единственная функция из cstring, более-менее нормально работающая с кириллицей в utf-8, да и то возвращает не реальную длину, а в два раза бОльшую, т.к. в utf-8 символ кириллицы занимает 2 байта, вместо одного, чего эта функция не учитывает.
+163
std::vector<double> WBuffer;
std::vector<double> CleanWBuffer;
std::vector<Color> PixelBuffer;
std::vector<Color> CleanPixelBuffer;
void Scene3D::ClearBuffers()
{
const size_t n = static_cast<size_t>(ScreenSize[0] * ScreenSize[1]);
memcpy(&*(WBuffer.begin()), &*(CleanWBuffer.begin()), n * sizeof(*(WBuffer.begin())));
memcpy(&*(PixelBuffer.begin()), &*(CleanPixelBuffer.begin()), n * sizeof(*(PixelBuffer.begin())));
}
Быстрая очистка буферов.
CleanWBuffer предварительно заполнен 0.0, CleanPixelBuffer предварительно заполнен нужным цветом.
Можно было воспользоваться std::fill, но оно работает в несколько раз дольше.
Пришлось так вот лезть в потроха std::vector. Доставляют подряд идущие & и *.
+157
void Scene3D::DrawTriangle(const Point3D &A, const Point3D &B, const Point3D &C, const Color& color)
{
// ---------------------------------------------------------------------------------------
// вспомогательные вычисления
// нормаль
const Vector3D& n = (B - A) ^ (C - A);
// ...
// центр треугольника
const Point3D& medium = (A + B + C) / 3.0;
Руки как-то привыкли const TypeName& variableName набирать в определении параметров методов.
И случайно набралось такое (строки 6, 11)
Операторы (+, -, ^, /) над векторами возвращают Vector3D, не const Vector3D&.
Заметил только через полгода, и всё это время оно почему-то работало, и даже ворнингов не было.
Но такое ведь не должно работать!
Результат вычисления в правой части присваивания структура, то есть она возвращается в стеке. Если бы я присвоил её какой-то локальной переменной, для которой выделена память в стеке текущей функции, то она бы перед удалением скопировалась в локальную переменную. А так получается что ссылка (n, medium) указывает куда-то на стек, где временно хранится возвращенное оператором значение. И при следующем вызове любой функции эта область стека должна перезаписаться.