- 1
- 2
- 3
int newclient(var v, newconn oldconn) {
[...]
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+131
int newclient(var v, newconn oldconn) {
[...]
}
Ничего особенного, конечно. Просто порадовало "newconn oldconn".
+144
typedef signed int s32;
//...
void SomeStruct::SomeFunc(const char* ipImageName /*, ... */ )
{
// ...
s32 imageNameSize = strlen(ipImageName) * sizeof(char) + 1;
this->mpImageName = new char[imageNameSize];
strcpy(this->mpImageName, ipImageName);
// ...
}
А теперь представим, что вместо char будет wchar_t... ...автор - лид-программист...
+139
int main() {
unsigned long oct;
int m,n,i,j;
int max=0;
scanf("%d",&oct);
for(i=0;i<=32/3;i++) {
m=0;
for(j=0;j<=2;j++) {
n=oct & 1;
if(n==1)
m=m | power(2,j);
oct=oct >> 1;
}
if(m>max)
max=m;
}
printf("%d",max);
return 0;
}
int power(int x, int a) {
int i;
int t=x;
if(a==0)
t=1;
else {
for(i=1;i<a;i++)
t*=x;
}
return t;
}
Определение максимальной цифры в восьмеричной записи числа.
Особенно радует вызов функции возведения в степень для двойки, да и сама функция тоже.
+141
#include <stdio.h>
int main() {
unsigned d,t,k;
scanf("%d",&d);
t=d;
for(k=0;t!=0;k++) //определяем кол-во значащих битов
t>>=1;
//обнуляем старший значащий бит
d<<=sizeof(d)*8-k+1;
d>>=sizeof(d)*8-k+1;
return 0;
}
Вот такое вот обнуление старшего бита
+136
#include <stdio.h>
#include <string.h>
int reg (char str[])
{
int i;
int n=strlen(str);
for (i=0; i<n; i++)
if (str[i]<91) str[i]=str[i]+32;
return str[i];
}
int main ()
{
char str[100]="OlololOlolOloLolOlooLololOlOllllOOOloLoloOlO";
int a=reg(str);
int i,n=strlen(str);
reg(str);
printf("%s",str);
return 0;
}
Программа собственно переводит в нижний регистр. Но как-то жестко написана. Очень сокрушаюсь, что нас еще не научили strwlr и strupr в институте. Оправдано такое написание или все же лучше пользоваться библиотечными функциями?
+133
#include<stdio.h>
int main()
{
int a;
printf("Vvedite svoy vozrast (0-200 let)");
scanf("%d",&a);
if ((a==11)||(a==12)||(a==13)||(a==14)){printf("mne %d let",a); return 0;}
if ((a==111)||(a==112)||(a==113)||(a==114)){printf("mne %d let",a); return 0;}
if (a%10==1){printf("mne %d god",a); return 0;}
if (a%10==2){printf("mne %d goda",a); return 0;}
if (a%10==3){printf("mne %d goda",a); return 0;}
if (a%10==4){printf("mne %d goda",a); return 0;}
if ((a%10==0)||(a%10==5)||(a%10==6)||(a%10==7)||(a%10==8)||(a%10==9)){printf("mne %d let",a); return 0;}
return 0;
}
Программа выводит год/года/лет. То есть возраст синтаксически правильно. Вопрос. Это как-нибудь можно написать покороче? Это считается говнокодом?
+129
#include <iostream>
#include <string.h>
using namespace std;
int strsearch(char* from, char* what);
int getnumberafter(char* from, char* what);
int strch(char* a, char* b, int pos);
int strsearch(char* from, char* what)
{
int n=strlen(from)-strlen(what)+1;
int i;
for(i=0; i<n; i++)
if(strch(from, what, i)==strlen(what)) return i;
return 0;
}
int getnumberafter(char* from, char* what)
{
int p, ret=0;
if((p=strsearch(from,what))==0) return 0;
p+=strlen(what);
while(from[p]<'0'&&from[p]>'9')
{
p++;
if(p>=strlen(from)) return 0;
}
while(from[p]>='0'&&from[p]<='9'&&p<strlen(from))
{
ret=ret*10+(from[p++]-'0');
}
return ret;
}
int strch(char* a, char* b, int pos)
{
int i,n=min(strlen(a)-pos,strlen(b));
for(i=0; i<n; i++)
if(a[i+pos]!=b[i]) return i;
return i;
}
int main(int argc, char* argv[])
{
int i;
double max=1,vol=0;
for(i=0; i<argc; i++)
{
cout << i << ": " << argv[i] << endl;
if(strch(argv[i],"type",0)==4) { max=getnumberafter(argv[i],"max=");}
if(strch(argv[i],"values",0)==6) { vol=(getnumberafter(argv[i],"=")+getnumberafter(argv[i],","))/2;}
}
cout << vol/max << endl;
return 0;
}
Задача из чего-то типа этого:
numid=2,iface=MIXER,name='Master Playback Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=31,step=0
: values=31,31
| dBscale-min=-46.50dB,step=1.50dB,mute=0
Получить значение в процентах.
#./a.out `amixer cget numid=2`
0,67
+137
strncat (dstring, " ", 512);
Калифорнийский код, простенько, но со вкусом. Сам не с первого раза понял в чём дело ;-)
+135
void init(void)
{
int i,j;
setup();
if (!fork())
_exit(execve("/bin/update",NULL,NULL));
(void) open("/dev/tty0",O_RDWR,0);
(void) dup(0);
(void) dup(0);
printf("%d buffers = %d bytes buffer space\n\r",NR_BUFFERS,
NR_BUFFERS*BLOCK_SIZE);
printf(" Ok.\n\r");
if ((i=fork())<0)
printf("Fork failed in init\r\n");
else if (!i) {
close(0);close(1);close(2);
setsid();
(void) open("/dev/tty0",O_RDWR,0);
(void) dup(0);
(void) dup(0);
_exit(execve("/bin/sh",argv,envp));
}
j=wait(&i);
printf("child %d died with code %04x\n",j,i);
sync();
_exit(0); /* NOTE! _exit, not exit() */
}
Говно, вошедшее в историю.
+141
for (int x=0; x < TANK_SIZE; x++)
{
for (int y=0; y < TANK_SIZE; y++)
{
*((Uint32 *)(((Uint8 *)player_surface[DOWN]->pixels) + (TANK_SIZE - y - 1) * player_surface[DOWN]->pitch + (TANK_SIZE - x - 1) * player_surface[DOWN]->format->BytesPerPixel)) = *((Uint32 *)(((Uint8 *)player_surface[LEFT]->pixels) + (TANK_SIZE - x - 1) * player_surface[LEFT]->pitch + y * player_surface[LEFT]->format->BytesPerPixel)) = *((Uint32 *)(((Uint8 *)player_surface[RIGHT]->pixels) + x * player_surface[RIGHT]->pitch + (TANK_SIZE - y - 1) * player_surface[RIGHT]->format->BytesPerPixel)) = *((Uint32 *)(((Uint8 *)player_surface[UP]->pixels) + y * player_surface[UP]->pitch + x * player_surface[UP]->format->BytesPerPixel));
*((Uint32 *)(((Uint8 *)enemy_surface[DOWN]->pixels) + (TANK_SIZE - y - 1) * enemy_surface[DOWN]->pitch + (TANK_SIZE - x - 1) * enemy_surface[DOWN]->format->BytesPerPixel)) = *((Uint32 *)(((Uint8 *)enemy_surface[LEFT]->pixels) + (TANK_SIZE - x - 1) * enemy_surface[LEFT]->pitch + y * enemy_surface[LEFT]->format->BytesPerPixel)) = *((Uint32 *)(((Uint8 *)enemy_surface[RIGHT]->pixels) + x * enemy_surface[RIGHT]->pitch + (TANK_SIZE - y - 1) * enemy_surface[RIGHT]->format->BytesPerPixel)) = *((Uint32 *)(((Uint8 *)enemy_surface[UP]->pixels) + y * enemy_surface[UP]->pitch + x * enemy_surface[UP]->format->BytesPerPixel));
}
}