Кресты / Говнокод #1858 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
void someMethod(const std::string& name,  std::autp_ptr<SomeClass> p);

{
    ...
    std::auto_ptr<SomeClass> p(new SomeClass());
    someMethod(p->GetName(), p);
    ...
}

Самое забавное, что при определенных условиях оно может работать.

Lexey Lexey, (Updated )

Комментарии (6, +6)

Кресты / Говнокод #1852 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
class cCar: public GAMEPLAYER::cPlayerRef, public cScrObject,
	public IspSetOnParkingPlace<GAMEPLAYER::cCar>, 
	public IspCheckLoadedState<GAMEPLAYER::cCar>,
//	public IspUseInitialPositioning<GAMEPLAYER::cCar>,
	public IspSetVelocity<GAMEPLAYER::cCar>,
	public IspTracetoPosition<GAMEPLAYER::cCar>,
	public IspChangeVehicle<GAMEPLAYER::cCar>,
	public IspChasePlayer<GAMEPLAYER::cCar>,
	public IspRaceParamsPlayer<GAMEPLAYER::cCar>,
	public IcallbackParked<GAMEPLAYER::cCar>,
	public ALTERNATIVEK::cstore_this<GAMEPLAYER::cCar>
{ //... дальше не интересно

Вот такой суровый cCar :)

generalgda generalgda, (Updated )

Комментарии (60, +60)

Кресты / Говнокод #1851 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
void SomeFunction(SomeClass* cls)
{
    std::auto_ptr<SomeClass> tmp(cls);
    SomeObject.SomeMethod(tmp.release());
}

несколько раз видел такое в разных вариациях (поэтому вместо копи-пасты - абстракция).
смысл сей конструкции упорно ускользает от меня :)

g26g g26g, (Updated )

Комментарии (22, +22)

Кресты / Говнокод #1850 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
void GAMEPLAYER::cCar::abandonCar(GAMEPLAYER::cPlayer* player){
	for(unsigned int i=0;i<size();++i){
		cBaseAnimManager * bam = get(i);
		if(!bam->isCarRider())
			continue;
		cCarRider* rdr = (cCarRider*)bam;
		if(rdr->gScript()==player->gScript()){
			delete rdr;
			storage.erase(i);
			--i;
		}
	}
}

НЕ time-critical код из некоторой игры
Наблюдаем:
1) непониманием того, зачем нужно наследование
2) плохо пахнущие имена переменных

generalgda generalgda, (Updated )

Комментарии (6, +6)

Кресты / Говнокод #1846 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
void CExeTuner::ResFill2Tree(uchar *baddr, uchar *addr, TRes *now, int level)
{
	int len;
	now->size1=*(uword *)(addr+0x0C); now->size2=*(uword *)(addr+0x0E);
	if (now->size1+now->size2) now->mas=new TRes * [(now->size1+now->size2)];
	ulong long1,long2;
	for (int i=0; i<(now->size1+now->size2); i++)
	{
		now->mas[i]=new TRes;
		now->mas[i]->back=now;
		now->mas[i]->name=new char [32];
		now->mas[i]->mas=NULL; now->mas[i]->data=NULL;
		long1=*(ulong *)(addr+0x10+(i<<3));
		long2=*(ulong *)(addr+0x14+(i<<3));
		if (long1&0x80000000) {
			long1&=0x7FFFFFFF;
			now->mas[i]->isname=true;
			len=*(uword *)(baddr+long1);
			now->mas[i]->rname1=new uchar [len*2+2+1];
				now->mas[i]->rname1[len*2+2]=0;
				memcpy(now->mas[i]->rname1,baddr+long1,len*2+2);
			now->mas[i]->name=new char [len+1];
				now->mas[i]->name[len]=0;
				for (int j=0; j<=len; j++)
				now->mas[i]->name[j]=now->mas[i]->rname1[(j+1)*2];
		} else {
			now->mas[i]->isname=false;
			now->mas[i]->rname2=long1;
			if (!ResNumToStr(long1,now->mas[i]->name,level)) _itoa(long1,now->mas[i]->name,10);
		}
		if (long2&0x80000000) {
			long2&=0x7FFFFFFF;
			now->mas[i]->isdir=true;
			ResFill2Tree(baddr, baddr+long2, now->mas[i], level+1);
		} else {
			now->mas[i]->isdir=false;
			now->mas[i]->size1=*(ulong *)(baddr+long2+4);
			now->mas[i]->data=new uchar [now->mas[i]->size1];
			if ((*(ulong *)(baddr+long2)+now->mas[i]->size1)>(*ExeMain.ResDirAddrOBJ+*ObjMas[ExeMain.ResPosInObj].size))
			{ now->mas[i]->data=NULL; now->mas[i]->size1=0;
			} else memcpy(now->mas[i]->data,baddr-*ExeMain.ResDirAddrOBJ+*(ulong *)(baddr+long2),now->mas[i]->size1);
		}
	}
}

Древнющий проект откопал))
Метод извлекает все ресурсы из PE файла в структуру типа дерево))

k06a k06a, (Updated )

Комментарии (3, +3)

Кресты / Говнокод #1843 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
class imgSeq {
public:
	CvSeq* faces;
	IplImage* img;
	IplImage* small_img;
	IplImage* gray;
	CvMemStorage* storage;
	int id;
	imgSeq() {
		CvSeq* faces = 0;
		IplImage* img = 0;
		IplImage* small_img = 0;
		IplImage* gray =0 ;
		CvMemStorage* storage = 0;
		id = -1; //unassigned
	};
};

Хотя бы id взаправду инициализирует

Orfest Orfest, (Updated )

Комментарии (18, +18)

Кресты / Говнокод #1836 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
  94. 94
  95. 95
  96. 96
  97. 97
  98. 98
  99. 99
  100. 100
bool mod_lesser ( int elem1, int elem2 ) {
if (elem1 < 0)
elem1 = - elem1;
if (elem2 < 0)
elem2 = - elem2;
return elem1 < elem2;
}

template <class T>
void printVector(const vector<T> &vec);

int _tmain(int argc, _TCHAR* argv[])
{
ostream_iterator <int> output (cout, " ");
vector <int> v1;
vector <int> v2;
vector <int> v3;
int x=0, i=0;
vector<int>::iterator endLocation;

do
{
cout << "Vvedite " << i << "element mnozhestva A: ";
cin >> x;
if (x!=-99999)
{
v1.push_back(x);
i++;
}
else break;
}
while (x!=99999);
i=0; x=0;

do
{
cout << "Vvedite " << i << "element mnozhestva B: ";
cin >> x;
if (x!=-99999)
{
v2.push_back(x);
i++;
}
else break;
}
while (x!=99999);
i=0; x=0;

do
{
cout << "Vvedite " << i << "element mnozhestva C: ";
cin >> x;
if (x!=-99999)
{
v3.push_back(x);
i++;
}
else break;
}
while (x!=99999);

cout << "A = { ";
printVector (v1);
cout << "}";

cout << '\n';

cout << "B = { ";
printVector (v2);
cout << "}";

cout << '\n';

cout << "C = { ";
printVector (v3);

//Выполнение операции A U B
cout << "}";
vector <int> results (v1.size()+v2.size());
cout << '\n';
sort (v1.begin(), v1.end(), mod_lesser);
sort (v2.begin(), v2.end(), mod_lesser);
sort (v3.begin(), v3.end(), mod_lesser);
merge (v1.begin(), v1.end(), v2.begin(), v2.end(), results.begin());
endLocation=unique (results.begin(), results.end());
cout << "A U B = {";
copy (results.begin(), endLocation, output);
cout << "}";
cout << '\n';

sort (results.begin(), results.end(), mod_lesser);

unique (v3.begin(), v3.end());
cout << "(A U B)\\C = {";
set_difference (results.begin(), results.end(), v3.begin(), v3.end(), output);
cout << "}";
cout << '\n';
system ("pause");
return 0;
}

Вот такие крутые программисты сидят в контакте. Особенно радуют три повторяющихся куска кода для ввода вектора и переменная i, единственное предназначение которой - зачем-то плюсоваться в цикле.

andrey.goryachev andrey.goryachev, (Updated )

Комментарии (19, +19)

Кресты / Говнокод #1775 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
void funcMir()
{

...

if ( __mir0>5 )
goto vihod;
TMir1 __mir1; // Конструктор не вызывается. (Оператор goto перескакивает через него.)

...

vihod:
...
// Здесь вызывается деструктор для __mir1 при выходе __mir1 из области видимости.
};

Код оригинальный из инета. Комментарии добавил мой друг.

Говногость Говногость, (Updated )

Комментарии (45, +45)