- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
class TTestLib
{
public:
char* Name;
unsigned int TotalTime;
TTestLib(char* AName): TotalTime(0), Name(AName) {}
...
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+147
class TTestLib
{
public:
char* Name;
unsigned int TotalTime;
TTestLib(char* AName): TotalTime(0), Name(AName) {}
...
}
char* Name - убило.
+163
class AnotherDammLoggerClass {
public:
// ...
static inline char *strtime()
{
// method is twice as fast as strftime)
static const int ASCII_OFFSET=48;
static char buffer[32]="";
struct timeval tv;
struct tm *lt;
if ( 0 == gettimeofday(&tv,NULL) )
{
lt=localtime(&tv.tv_sec);
int i=0;
/* year */
buffer[i++]=(lt->tm_year%100/10)+ASCII_OFFSET;
buffer[i++]=(lt->tm_year%10)+ASCII_OFFSET;
/* month */
buffer[i++]=((lt->tm_mon+1)/10)+ASCII_OFFSET;
buffer[i++]=((lt->tm_mon+1)%10)+ASCII_OFFSET;
/* day */
buffer[i++]=(lt->tm_mday/10)+ASCII_OFFSET;
buffer[i++]=(lt->tm_mday%10)+ASCII_OFFSET;
/* separator */
buffer[i++]='.';
/* hours */
buffer[i++]=(lt->tm_hour/10)+ASCII_OFFSET;
buffer[i++]=(lt->tm_hour%10)+ASCII_OFFSET;
/* minutes */
buffer[i++]=(lt->tm_min/10)+ASCII_OFFSET;
buffer[i++]=(lt->tm_min%10)+ASCII_OFFSET;
/* seconds */
buffer[i++]=(lt->tm_sec/10)+ASCII_OFFSET;
buffer[i++]=(lt->tm_sec%10)+ASCII_OFFSET;
/* separator */
buffer[i++]='.';
/* microseconds */
buffer[i++]=(((tv.tv_usec)%1000000)/100000)+ASCII_OFFSET;
buffer[i++]=(((tv.tv_usec)%100000)/10000)+ASCII_OFFSET;
buffer[i++]=(((tv.tv_usec)%10000)/1000)+ASCII_OFFSET;
buffer[i++]=(((tv.tv_usec)%1000)/100)+ASCII_OFFSET;
buffer[i++]=(((tv.tv_usec)%100)/10)+ASCII_OFFSET;
buffer[i++]=(((tv.tv_usec)%10))+ASCII_OFFSET;
/* delimiter */
buffer[i++]=(char)0;
}
else
{
strcpy(buffer, "<no time>");
}
return buffer;
}
// ....
}
оптимизируем производительность. коммент "twice as fast as strftime" порадовал: вместо того что бы редундантные вызовы поубирать, давайте ручками перепишем. для пущей красоты сделано inline (и еще скапипазджено в три других места проекта).
потому что в логгере strftime() наверное жутко тормозил - например по сравненю с записью сообщений на диск.......
+166
#include <dir.h>//ДЛЯ ОПРЕДЕЛЕНИЯ mkdir(ИМЯ ПАПКИ)
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <alloc.h>
#include <string.h>
#include <iostream.h>
int ndig(char x)
{if('0'<=x&&x<='9')return 0;else return 1;}
// СТРОКА ВЕДОМОСТИ ДЛЯ ОДНОГО СТУДЕНТА
struct stud
{char fio[122];int b[9],ns
static int nc
,nd;
void out(FILE*fo);stud(){fio[121]=0;}
stud(FILE*fi);
stud(stud&s){*this=s;}
}; //end of stud body
int stud::nc=44;
int stud::nd=5;
stud::stud(FILE *fi)
{fscanf(fi,"%i ",&ns); fgets(fio,nc,fi);
for(int j=1;j<=nd;++j)fscanf(fi,"%i",&b[j]);}
void stud::out(FILE*fo=stdout)
{fprintf(fo,"%3i ",ns);
fputs(fio,fo); for(int j=1;j<=nd;++j)
{if(b[j]>=0&&b[j]<6) fprintf(fo,"%3i",b[j]);
else fprintf(fo," ");}
fprintf(fo,"\n"); if ( fo==stdout) getch();
}//end of stud
//ВЕДОМОСТЬ ОДНОЙ ГРУППЫ
//("МАССИВ СТРОК" ДЛЯ ОТДЕЛЬНЫХ СТУДЕНТОВ)
struct grup{ stud**st;//"МАССИВ СТУДЕНТОВ"
FILE*fi;char title[3][122]//"ШАПКА" ВЕДОМОСТИ
,sf[77];
int ms;//ЧИСЛО СТУДЕНТОВ
void nw();//ПАМЯТЬ ДЛЯ СТУДЕНТОВ
void out(char*sf); void out(FILE*fo);
grup(grup&g);grup(int fms){ms=fms; nw();}
grup(char*sf); grup&operator=(const grup&g);
void deg();~grup(){deg();} grup(); };
//end of grup body
grup::grup(){ms=0;st=0;fi=0;
for(int j=0;j<3;++j)memset(title[j],0,122);}
void grup::nw()
{st=new stud*[ms+1];
if(!st){cout<<"\nst=0 grup::nw()\n";exit(1);}
for(int j=0;j<=ms;++j)
{st[j]=new stud;
if(!st){cout<<"\nst[j]=0\n";exit(1);}
}}
grup::grup(char*fsf)
{strcpy(sf,fsf); char s[77]="\n"; int j;
fi=fopen(sf,"rt");
if(!fi)
{cout<<"\n0)fi=0,sf="<<sf;getch();exit(1);}
ms=0; while(!feof(fi)){fgets(s,77,fi);++ms;}
ms-=3; fclose(fi); fi=fopen(sf,"rt");
if(!fi){cout<<"\nfi\n";exit(1);}
for(j=0;j<3;++j) fgets((title[j]),77,fi);
//ВВОД "СТУДЕНТОВ" ИЗ ФАЙЛА sf
nw();for(j=1;j<=ms;++j){stud stj(fi);*st[j]=stj;}
fclose(fi);
}
grup&grup::operator=(const grup&g)
{if(this==&g)return*this; int j; this->deg();
fi=g.fi; strcpy(sf,g.sf); ms=g.ms;
nw(); for(j=0;j<=ms;++j)*st[j]=*g.st[j];
for(j=0;j<3;++j)strcpy(title[j],g.title[j]);
return*this;
}
grup::grup(grup&g)
{for(int j=0;j<3;++j)strcpy(title[j],g.title[j]);
ms=g.ms; strcpy(sf,g.sf);
nw(); for(j=0;j<=ms;++j)*st[j]=*g.st[j];
}
void grup::deg()
{if(st) {for(int j=0;j<=ms;++j)
if(st[j]){delete st[j];st[j]=0;}delete[]st;st=0;}
}
void grup::out(FILE*fo=stdout)
{if(fo==stdout)cout<<'\n'; int j=0;
for(;j<3;j++) fputs(title[j],fo);
for(j=1;j<=ms;j++) st[j]->out(fo);
}
void grup::out(char*sf)
{FILE*fo=fopen(sf,"wt");
if(!fo){cout<<"\nfo=0\n";exit(1);}
out(fo); fclose(fo);
} //end of grup
Кусок кода с "базовыми классами" для курсовой работы в непоследнем университете Петербурга. Данные "классы" потом по заданию предлагается всячески расширять.
А потом жалуемся, что студенты ничего не умеют. А кто ж их учит?
+165
inline void bubbleSort3(int* data)
{
int temp;
if (data[0] > data[1])
{ temp = data[0]; data[0] = data[1]; data[1] = temp; }
if (data[1] > data[2])
{ temp = data[1]; data[1] = data[2]; data[2] = temp; }
if (data[0] > data[1])
{ temp = data[0]; data[0] = data[1]; data[1] = temp; }
};
Пример "не верной" сортировки. Найдено на просторах Интернета.
+173
NNLayer::~NNLayer()
{
// call Initialize(); makes sense if you think
Initialize();
}
Отсюда: http://www.codeproject.com/KB/library/NeuralNetRecognition.aspx
+164
//----------------------------------------------------------------------------
void TChimesMinigame::InventoryEndDrag(str aId)
{
TSceneObject * drag_object = getScene(1)->FindObject(aId);
if (!drag_object)
{
iInventory->CheckEndDrag(NULL);
return;
}
iInventory->CheckEndDrag(NULL);
}
//----------------------------------------------------------------------------
+159
bool CSomeClass::Init( int argc, wchar_t* argv[] )
{
bool isOk = true;
bool goOn = true;
for( int i = 0; isOk && goOn; ++i ) {
switch( i ) {
case 0:
isOk = checkCommandLine( argc, argv );
break;
case 1:
isOk = checkFileExistence();
break;
case 2:
isOk = initFiles();
break;
default:
goOn = false;
}
}
return isOk;
}
+161
while(fgets(buf,4095,in)){
if(strcmp(buf,"nodes")){while(fgets(buf,4095,in)){
if(strcmp(buf,"end")){
m->mb=mb;
m->bv=new vec3f[mb];
m->ba=new vec3f[mb];
m->p=new int[mb];
a->max_b=mb;
a->fr=new TMAFrame[mb];a->Initfr();
break;
};
mb++;
};};
};
Взято с одного форума по программированию. От автора:
Короче говоря при загрузке модели SMD возникает ошибка при чтении , точнее подсчёте костей :
+164
template < int Order, typename T >
struct PrefixSum {
static inline void update ( T* a ) throw () { *a += *(a-1); PrefixSum < Order-1, T > :: update( a+1 ); }
};
template < typename T >
struct PrefixSum < 1,T > {
static inline void update ( T* a ) throw () { *a += *(a-1); }
};
template < int P, int N, int Condition = 0 >
struct Bpn {
enum { value = N * ( Bpn < P-1, N-1, (N > P) > :: value - Bpn < P-1, N, (N > P-1) > :: value ) };
};
template < int P, int N > struct Bpn < P, N, !0 > { enum { value = 0 }; };
template < int P > struct Bpn < P, 0, 0 > { enum { value = P ? 0 : 1 }; };
template < int P > struct Bpn < P, 1, 0 > { enum { value = P & 1 ? 1 : -1 }; };
template < typename Ta, typename Tb, bool C > struct IfThenElse;
template < typename Ta, typename Tb > struct IfThenElse < Ta, Tb, true > { typedef Ta TRes; };
template < typename Ta, typename Tb > struct IfThenElse < Ta, Tb, false > { typedef Tb TRes; };
template < int K, int I = 1 >
struct MomentSeries {
typedef typename IfThenElse < MomentSeries<K,I+1>, MomentSeries<K,K>, (I<K) >::TRes SubT;
static inline double accumulate ( double const* psum ) throw () {
return Bpn < K, I > :: value * psum [ I + 1 ] + SubT :: accumulate ( psum );
}
};
template < int K >
struct MomentSeries < K, K > {
static inline double accumulate ( double const* psum ) throw () {
return Bpn < K, K > :: value * psum [ K + 1 ];
}
};
template < int Order >
struct MomentLoop {
static inline void assign ( double *moments, size_t momentStride, double const* psum ) throw() {
*(moments - momentStride) = MomentSeries < Order-1 > :: accumulate ( psum );
MomentLoopAssign < Order-1 > :: assign ( moments - momentStride, momentStride, psum );
}
};
template <>
struct MomentLoop < 1 > {
static inline void assign ( double *moments, size_t momentStride, double const* psum ) throw() {
moments [ 0 ] = MomentSeries < 1, 1 > :: accumulate ( psum );
*(moments - momentStride) = psum [ 1 ];
}
};
/**
* Function computes a series of geometric moments by prefix summation method:
* Zhou F., Kornerup P. Computing Moments by Prefix Sums. // VLSI Signal Proc. - 2000. - 25. - P. 5 - 17.
* @param data is first data elemet address.
* @param ndataItems is number of data items.
* @param dataStride is the number of elements between two neighbor data items,
* in case of simple array dataStride is equal to 1.
* @param moments is address of 0-order moment.
* @param momentStride is number of elements between two neigbor moment items,
* in case of consequtive moments placement, momentStride is equal to 1.
*/
template < int Order, class OutPolicy >
inline void psmoment ( double const* data,
size_t const ndataItems,
size_t const dataStride,
double* moments,
size_t const momentStride ) throw() {
double psum [ Order+1 ] = { 0 };
// Initialize prefix sum
for ( size_t i = ndataItems, j = ndataItems * dataStride; i; ) {
--i; j -= dataStride; psum [ 0 ] = data [ j ];
PrefixSum < Order, double > :: update ( psum+1 );
}
// convert psum to moment values
OutPolicy :: assign ( moments + Order * momentStride, momentStride, psum );
}
Вы - тестовая площадка, перед написанием статьи в пфп ;)
+147
ZeuS
do
{
/*
Тупые, притупые идусы из MS, не понимают что они тупые притупые. Дело в том, что в MSDN
написано, что NetUserEnum может работать с уровнями 4, 23, а на практики мы получаем
большой индуский ХУЙ!
*/
DWORD readed;
DWORD total;
USER_INFO_0 *buf0 = NULL;
status = CWA(netapi32, NetUserEnum)(NULL, 0, FILTER_NORMAL_ACCOUNT, (LPBYTE *)&buf0, MAX_PREFERRED_LENGTH, &readed, &total, &handle);
/////////////////////////////////////
//Непонятно, может ли оно вернуть NULL. Помня фокус индусов с wsprintf, защитимся от этого.
if(p == NULL)p = path;
//////////////////////////////////
if(iSize == -1)
{
//Гении-индусы решили подмениь возрашаемое значение в Vista на -1, в случаи если не хватает
//места на всю строку, однако буфер заполняется. Ума устаналивать LastError не хватило...
iSize = _LengthW(pBuf);
}
else pBuf[iSize] = 0;
///////////////////////////////////
//Я ибал в рот тупых уродов написавших тупой rfc и тупорлых говнокодеров,
//Я ставлю листинг на проивзольны порт на все IP сервера, и пашел на хуй софт который не
//сможет это прочитать. Возможно меня ввел в забулждение FlashFXP 3.6.0. Т.к. в destAddr
//он отправляет какие то данные сервера. А по rfc, как я понел, там должны быть данные
//сокс-сервера, где нужно ждать сединения.
//Ищим свободный порт.
((SOCKADDR_IN6 *)destAddr)->sin6_port = 0;