- 1
int** ppi = new int*;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+159
int** ppi = new int*;
+161
CRect rcHeaderImage;
rcHeaderImage.left = listColumn.m_strText.IsEmpty() ? ( ( rcHeaderText.left + rcHeaderText.right ) / 2 ) - ( sizeIcon.cx / 2 )
- (( !m_bShowThemed
#ifndef DISABLE_XP_THEMES
|| m_thmHeader.IsThemeNull()
#endif
) ? 0 : 1 ) : rcHeaderText.left;
Вот так вот задачка "подвинуть иконку вправо на пару пикселов" превращается в нетривиальную :)
+152
//CreatorOfBullshit говорит: следите за руками
void __fastcall TFORM_MENU::pan_newClick(TObject *Sender) //запуск новой игры
{
if(fl_sound)sndPlaySound("Data\\Sounds\\push.wav",SND_ASYNC|SND_NODEFAULT);
tm_showstarthint->Enabled=false;
pan_cong->Visible=false;
pan_hider->Visible=false;
pan_new->Caption="Еще разок";//меняем надпись на кнопке
pan_new->Hint="Начать новую сборку";
pan_sign->Color=clBlack;
lab_timeleft->Caption="00:00";
lab_timeleft->Hint="...а время течёт, как вода по трубам...";
tm_gameseconds->Enabled=false; //сначала останавливаем таймер, и после окончания прорисовки стартового поля запускаем его снова
Label1->Visible=true;
lab_timeleft->Visible=true;
game_time_seconds=0;//сброс времени
game_time_minutes=0;
pb_viewport->Enabled=true;
for(int i=0;i<128;i++)
{
gameplane.recreate();
if(gameplane.getclosed()<8)
break;
}
game_start_count=gameplane.getclosed();
gameplane.drawfield();
lab_per->Caption=IntToStr( (int)( (float)gameplane.getclosed()*100.f/(float)(game_field_width*game_field_height) ) )+"%";
tm_gameseconds->Enabled=true; //запускаем таймер
}
...
//CreatorOfBullshit говорит: "фрагмент из модуля с определениями для класса объекта gameplane" тот самый recreate()
...
void C_GAMEFIELD::recreate()
{
/*
Создаю игровое поле и расположения
*/
int i,j;
for(i=0;i<width;i++)
{
for(j=0;j<height;j++)
{
pp_field[i][j]=0;
}//for j
}//for i
//определение центральной точки источника воды:
if( (width&b0001)==0 )
start_x=(width>>1)-1;
else
start_x=(width>>1);
//_ _ _ _ _ _ _ _ _ _ _ _
if( (height&b0001)==0 )
start_y=(height>>1)-1;
else
start_y=(height>>1);
pp_field[start_x][start_y]|=wALWAYSON;//назначение стартовой метки(поднимается флаг)
crt_crgf();
checklinkup();
for(i=0;i<width;i++)for(j=0;j<height;j++)
{
pp_mask[i][j]=pp_field[i][j];
}//for
}
...
//CreatorOfBullshit говорит: "Теперь проследуем в crt_crgf()"
void C_GAMEFIELD::crt_crgf() //Соединяет неправильно построеенные трубы
{ //Проработать мне нужно алгоритм построения!!!
unsigned __int8 i,j;
static int brd_right,
brd_bottom,
bounds;
crt_setcell(start_x,start_y, TRIPLE); ///crt_setcell создает трубу, потом тут же ее поворачиваем
//далее первый шаг построения: сначала создаются совершенно случайные незаконо-
//мерные ветви, т.е. могут остаться НЕЗАПОЛНЕННЫЕ участки:
unsigned __int8 startcell=pp_field[start_x][start_y], tryingcell;
if( (startcell&UP)==UP )
crt_connect(start_x,start_y-1,DOWN);
if( (startcell&DOWN)==DOWN )
crt_connect(start_x,start_y+1,UP);
if( (startcell&LEFT)==LEFT )
crt_connect(start_x-1,start_y,RIGHT);
if( (startcell&RIGHT)==RIGHT )
crt_connect(start_x+1,start_y,LEFT);
}
//CreatorOfBullshit говорит: "Апофеоз говнокодизма - чуть ниже:"
inline void C_GAMEFIELD::crt_setcell(unsigned __int8 x, unsigned __int8 y, unsigned __int8 pipetype)
{
pp_field[x][y]|=pipetype;
//создаем трубу по заказу и рандумно поворачиваем
if(random(2))
rotate_CW(x,y);
if(random(2))
rotate_CW(x,y);
if(random(2))
rotate_CW(x,y);
}
Говнокод написан лично моими руками на первом курсе института. Писал игру в которой нужно поворачивать трубы так чтобы потом по всему игровому полю текла вода. Писал на Буилдере 5.0. Угощайтесь.
Алсо это не еще не все - там есть фрагмент в котором китайским методом создаются спрайты игровых текстур.
С:8444
+158
class SomeClass
{
public:
SomeClass(bool evenlope = true)
{
if(evenlope)
{
if (IsVistaOrGreater())
mLetter = new SomeClassVista;
else
mLetter = new SomeClassXP;
}
else
mLetter = 0;
}
virtual ~SomeClass() { delete mLetter; }
virtual bool Foo(int param) { return mLetter->Foo(param); }
private:
SomeClass* mLetter;
};
class SomeClassXP : public SomeClass
{
public:
SomeClassXP():SomeClass(false) { /* ... */ }
~SomeClassXP() { /* ... */ }
virtual bool Foo(int param) { /* ... */ }
};
Нужно было добавить поддержку новых настроек висты и семёрки, которые нельзя изменить через старый интерфейс. Наговнякал.
+145
#include <stdio.h>
#include <stdlib.h>
#define m(x)(x<0?-1:!!x)
#define g tj()-J
#define a(x)(x<0?-x:x)
#define h(x)((x)<=K?x:N-(x))
#define f 9999
#define A return
#define H printf(
#define R double
#define U int
#define V for
#define b else
#define u while
#define B if
U v,w,Y= -1,W,J,p,F,o=f,M,N,K,X,YY,_,P[f],s(); typedef U(*L)(); L q[f]; tj(){
U S=m(v)+(m(w)<<K); B(!S)A J; V(v=W+S; v!=J&&!q[v]; v+=S); A v; } k(){ _=K; A
v?a(v)>1||w-Y||!q[J]:(w-Y&&(w-Y*2||q[W+Y*(N+1)]|| (J>>K)-K+(Y-1)/
v?a(v)>2))||q[J];
} z(){ _=5; A v*w||g; } e(){ _= -2;
A(v*v*v-v||w*w*w-w)&&(J-W-2||(W&N)-4||(W>>K!=(Y-1?N:0))||
q[W+1]||q[W+2]||q[W+K]!=z||P[W+K]*Y<0); } R VR(){ ! int PZ=0x7fff;
A(R)(rand()&PZ)/(R)PZ; } l(){ _=K+1; A(v*w&&a(v)-a(w))||g; } R UC(){ R i=0,d;
u((i+=d=VR())<1.0); A d; } c(){ _= -11; A a(v)-a(w)||g; } I(ur,n,x){ W=ur;
J=n; B(P[W]!=Y||P[J]==Y)A J+1; v=(J&N)-(W&N); w=(J>>K)-(W>>K); A
q[W]()||(x&&QL(W,J,s)); } TT(W){ v=w=0; A q[W]()+K; } s(){ U j= -1,i; Y= -Y;
V(i=0; i<M; ++i){ B(j<0&&P[i]== -Y&&TT(i)&&_== -2) { j=i; i= -1; } b
B(j>=0&&!I(i,j,0))A Y= -Y; } A!(Y= -Y); } bb(){ _=1; A a(v*w)-2; } uv(){
V(v=0; v<f; ++v){ B(h(v>>K)==0){ U S=h(v&N);
q[v]=!S?z:(S==1?bb:(S==2?c:(v&N>K?l:e))); } b B(h(v>>K)==1)q[v]=k; b q[v]=0;
P[v]=!!q[v]*(28-v); } } y(){ U G=Y,i; J=0; V(i=0; i<M; ++i){
i%8||H"\n%4o ",i); B((Y=P[i]=m(P[i]))&& TT(i))H"%c ",_+93+Y*16); b H"- "); }
H"\n "); do H"%2d",i++&N); u(i&N); Y=G; H"\n"); } O(W,J){
B((q[J]=q[W])==k&&h(J>>K)==0)q[J]=l; B(q[W]==e)B(J-W==2)O(J+1,J-1); b
B(W-J==2)O(W-1,W+1); P[J]=P[W]; q[W]=! 0; P[W]=0; } QL(W,J,D)L D; { U
HQ=P[J],YX; L AJ=q[J],XY=q[W]; O(W,J); YX=D(); O(J,W); q[J]=AJ; q[W]=XY;
P[J]=HQ; A YX; } C(){ U i,j,BZ=0; V(i=0; i<M; ++i){ L Z=q[i]; B(Z){ U
r=h(i>>K)+h(i&N),G=Y, S=Z==z?88:(Z==k?11 +r+(P[i]<0?N-(i>>K):(i>>K)):
(Z==l?124-((YY<8&&((i&N)!=K|| (i>>K)!=(P[i]>0?0:N)))?M:0):
(Z==c?41+r:(Z==e?f-r-r:36+r+r)))); Y=P[i]; V(j=0; j<M;
++j)B(!I(i,j,0))S+=(P[j]?5:1); BZ+=G==Y?S:-S; Y=G; } }
B(!(++X&M-1))write(1,".",1); A BZ; } PX(){ U i,Q=0,XP=0,JZ=M*M,E= -f,t,S=o;
B(!F--)A++F+C(); V(i=0; i<JZ; ++i)B(!I(i>>K+K,i&M-1,1)){ Y= -Y; o= -E; t=
-QL(i>>K+K,i&M-1,PX); Y= -Y; B(t>E){ ++XP; Q=i; E=t; B(E>=S) A++F,E; } }
B(!XP)E=s()?-f+1:0; p=Q; A++F,E; } RZ(){ U i,j,T=0; V(; ; ){ y(); o=f; do{
H"\n%d %d %d %s ",X,T,C(),s()?"!":">"); fflush(stdout); }
u(scanf("%o%o",&i,&j)!=2||I(i,j,1)); O(i,j); y(); X=0; ++YY; Y= -Y; T=PX();
i=p>&g t;(K<<1); j=p&(M-1); B(I(i,j,1)){ H"Rats!\n"); A; } O(i,j); Y= -! Y;
B(T>M*M)H"\nHar har.\n"); } } main(ac,av)char**av; { long
B(T>time(),j=time(&j);
R i=0; srand((U)j); V(M=0; M<=f; ++M)i+=UC(); M=i/100; B(M&3)++M; B(M&1)--M;
V(N=1; N*N<M; ++N); K= --N/2; F=ac>1?atoi(av[1]):2; uv(); RZ(); }
no comments
+145
int i=0;
for (i=0;i<2;)
{cout<<"Enter M takoe 4to Bbl -> m>0 .\n ";
cin>>M;
if (M>0)
i=76;
}
Из лабы однокурсника по C++.
+145
#include <iostream>
#include <fstream>
#include <conio.h>
using namespace std;
int main()
{
int wc,cnt=0,maxp=0,minp=2147483647,maxn=-2147483648,minn=0,pos=0,neg=0,zf=0;
fstream(f);
f.open("input.txt",ios::in);
while (!f.eof())
{
if(!zf) zf--;
wc=0;
f >>wc;
if (wc>0) { if (maxp<wc) maxp=wc; if (minp>wc) minp=wc; pos++; }
else {if (minn>wc) minn=wc; if (maxn<wc&&wc)maxn=wc; if (!wc) zf+=2; else neg++; }
}
if (pos>1 && neg>1)
if ((float)maxp/minp > (float)minn/maxn) cout<<maxp<<"/"<<minp<<"="<<(float)maxp/minp;
else cout<<minn<<"/"<<maxn<<"="<<(float)minn/maxn;
if (pos>1 && neg<2) cout<<maxp<<"/"<<minp<<"="<<(float)maxp/minp;
if (pos<2 && neg>1) cout<<minn<<"/"<<maxn<<"="<<(float)minn/maxn;
if (pos<=1 && neg<=1)
if(zf) if(pos) cout<<"0/"<<minp<<"=0";else cout<<"0/"<<minn<<"=0";
else if ((float)maxp/maxn>(float)maxn/maxp)cout<<maxp<<"/"<<maxn<<"="<<(float)maxp/maxn;
else cout<<maxn<<"/"<<maxp<<"="<<(float)maxn/maxp;
if (pos+neg+zf<=1) cout<<"No solution!";
f.close();
getch();
return 0;
}
Задача 2-ого курса: "в массиве целых числел найти два таких числа, чтобы их частное было максимальным ( O(n) )"
И ее решение -.- Особо доставляет название переменных
+147
int count(int a)
{
int cnt=0;
while(a)
{
++cnt;
}
return cnt;
}
Ф-ция для подсчета количества знаков числа. Взято с www.cyberforum.ru
+147
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <algorithm>
#include <vector>
#include <string>
#define N 5
#define TSK "durak"
using namespace std;
int m[N];
int main(void){
freopen(TSK".in", "rt", stdin);
freopen(TSK".out", "wt", stdout);
scanf("%d%d%d%d", &m[0], &m[1], &m[2], &m[3]);
sort(m, m + 4);
int ans(0);
for(int i = 1; i < 4; i++){
if(m[i] == m[i-1] && m[i] != 0)
ans++;
}
printf("%d\n", ans);
return 0;
}
+159
// TODO: use Virtual memory instead of heap!
#ifndef __CHUNK_H__
#define __CHUNK_H__
#include <windows.h>
#include "../JuceLibraryCode/JuceHeader.h"
class Chunk {
public:
enum CHUNK_DIRECTION {CHUNK_UNKNOWN = 0, CHUNK_IN, CHUNK_OUT};
Chunk (DWORD ChunkSize, WORD id, CHUNK_DIRECTION chunkDirection);
~Chunk ();
// override
virtual void eventChunkIsEmpty () {
Logger::outputDebugString(T("empty"));
}
virtual void eventChunkIsFull () {
Logger::outputDebugString(T("full"));
}
virtual void eventChunkOverrun () {
Logger::outputDebugString(T("overrun"));
}
DWORD getData (WORD *data, DWORD size) {
if (data == 0) return 0;
if (cs.tryEnter ()) { // if it's true, we locked.. (TODO: check, i'm not sure about that)
if (((size + nReadCounter) > nWriteCounter) || size == 0) { cs.exit(); return 0; }
memcpy (data, pBuffer + nReadCounter, size*sizeof(WORD));
nReadCounter += size;
if (nReadCounter == nWriteCounter) { eventChunkIsEmpty() ; nWriteCounter = 0; nReadCounter = 0; }
cs.exit ();
return size;
}
return 0;
}
DWORD putData (WORD *data, DWORD size) {
if (data == 0) return 0;
if (cs.tryEnter ()) { // if it's true, we locked.. (TODO: check, i'm not sure about that)
if ((size + nWriteCounter) > nSize) { eventChunkOverrun(); cs.exit (); return 0; }
memcpy (pBuffer + nWriteCounter, data, size*sizeof(WORD));
nWriteCounter += size;
if (nWriteCounter == nSize ) eventChunkIsFull();
cs.exit ();
return size;
}
return 0;
}
inline DWORD getSize () {
return nSize;
}
// TODO: add check for nWriteCounter?
inline bool setSize (DWORD ChunkSize) {
if (bExchangeIsActive) return false;
nSize = ChunkSize;
// TODO: add result check.
pBuffer = (WORD*) realloc ((void*)pBuffer, ChunkSize*sizeof(WORD));
if (pBuffer) return true;
return false;
}
inline DWORD getReadCounter () { return nReadCounter; }
inline DWORD getWriteCounter () { return nWriteCounter; }
juce_UseDebuggingNewOperator
protected:
bool bExchangeIsActive;
CHUNK_DIRECTION cdDirection;
DWORD nSize;
DWORD nWriteCounter;
DWORD nReadCounter;
WORD nChunkId;
WORD *pBuffer;
CriticalSection cs;
};
#endif
// EOF
#include "Chunk.h"
Chunk::Chunk (DWORD ChunkSize, WORD id, CHUNK_DIRECTION chunkDirection) {
bExchangeIsActive = false;
cdDirection = chunkDirection;
nSize = ChunkSize;
nWriteCounter = 0;
nReadCounter = 0;
nChunkId = id;
pBuffer = (WORD*) malloc (ChunkSize*sizeof(WORD));
zeromem (pBuffer, ChunkSize*sizeof(WORD));
}
Chunk::~Chunk () {
if (pBuffer) free (pBuffer);
}
// EOF
Посвящается всем изобретателям велосипедов и просто неудачникам.. :(