- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
for(int c = 0; c < 2; ++c)
{
if(c)
{
// do something
}
else
{
// do something else
}
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+2
for(int c = 0; c < 2; ++c)
{
if(c)
{
// do something
}
else
{
// do something else
}
}
Одна из причин необходимости разворачивания циклов.
+3
Date& operator ++ (Date& date) //даже не хватило строк на говнокоде.ру, чтобы польностью скопировать функцию
{
if (date.mm == JAN)
{
if (date.dd == 31)
{
date.mm = FEB;
date.dd = 1;
}
else
{
++date.dd;
}
}
else if (date.mm == FEB)
{
if (isLeapYear(date))
{
if (date.dd == 29)
{
date.mm = MAR;
date.dd = 1;
}
else
{
++date.dd;
}
}
else
{
if (date.dd == 28)
{
date.mm = MAR;
date.dd = 1;
}
else
{
++date.dd;
}
}
}
else if (date.mm == MAR)
{
if (date.dd == 31)
{
date.mm = APR;
date.dd = 1;
}
else
{
++date.dd;
}
}
else if (date.mm == APR)
{
if (date.dd == 30)
{
date.mm = MAY;
date.dd = 1;
}
else
{
++date.dd;
}
}
else if (date.mm == MAY)
{
if (date.dd == 31)
{
date.mm = JUN;
date.dd = 1;
}
else
{
++date.dd;
}
}
else if (date.mm == JUN)
{
if (date.dd == 30)
{
date.mm = JUL;
date.dd = 1;
}
else
{
++date.dd;
}
}
else if (date.mm == JUL)
{
if (date.dd == 31)
{
date.mm = AUG;
date.dd = 1;
}
else
{
++date.dd;
}
+5
#include <bits/stdc++.h>
using namespace std;
#define mp make_pair
#define mt make_tuple
#define pb push_back
#define rep(i,a,b) for(int i=a;i<b;++i)
#define forn(i, n) for(int i=0;i<n;++i)
#define forv(it, v) for(typeof((v).begin()) it = (v).begin(); it != (v).end(); ++it)
#define all(c) (c).begin(), (c).end()
#define fst first
#define snd second
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef pair<int,int> pii;
typedef long long ll;
typedef vector<ll> vll;
typedef pair<ll,ll> pll;
typedef long double ld;
typedef string st;
const int inf = 1000 * 1000 * 1000;
const int mod = 1000 * 1000 * 1000 + 7;
const ld pi = acos(-1.0);
const ll infl = 1000ll * 1000ll * 1000ll * 1000ll * 1000ll * 1000ll;
const ld eps = 1e-7;
#define y1 y1_dhs
В продолжении предыдущего ГК: типичное начало олимпиадной проги на С++.
+2
#include <bits/stdc++.h>
using namespace std;
typedef long long ll ;
const int maxn = 100010 ;
int n , m;
struct node {
int x , y;
}p[10];
bool cmp(node a , node b)
{
if(a.x == b.x) return a .y < b.y ;
return a.x < b.x ;
}
int main()
{
scanf("%d",&n) ;
for(int i = 0 ;i<n ;i++){
scanf("%d%d",&p[i].x , &p[i].y) ;
}
sort(p,p+n ,cmp) ;
if(n==1){
printf("-1\n") ;
}
else if(n == 2){
if(p[0].x == p[1].x ||p[0].y == p[1].y){
printf("-1\n") ;
}
else{
printf("%d\n",abs( p[1].x - p[0].x) * abs(p[1].y - p[0].y)) ;
}
}
else if(n == 3){
if(p[0].x == p[1].x && p[1].x == p[2].x){
printf("-1\n") ;
}
else if(p[0].y == p[1].y && p[1].y == p[2].y){
printf("-1\n") ;
}
else if(p[0].x == p[1].x){
if(p[0].y == p[2].y){
printf("%d\n",abs(p[1].y - p[2].y) * abs(p[0].x - p[2].x)) ;
}
else if(p[1].y == p[2].y){
printf("%d\n",abs(p[0].y - p[2].y )*abs(p[0].x -p[2].x)) ;
}
else{
printf("-1\n") ;
}
}
else if(p[1].x == p[2].x){
if(p[0].y == p[1].y){
printf("%d\n",abs(p[0].y - p[2].y) * abs(p[0].x - p[2].x)) ;
}
else if(p[0].y == p[2].y){
printf("%d\n",abs(p[0].y - p[1].y )*abs(p[0].x -p[2].x)) ;
}
else{
printf("-1\n");
}
}
else{
printf("-1\n");
}
}
else {
if(p[0].x != p[1].x || p[2].x !=p[3].x ||p[1].y !=p[3].y ||p[0].y != p[2].y ){
printf("-1\n") ;
}
else{
int flag = 1;
for(int i = 0 ; i< 4;i++){
for(int j = i+1 ;j<4 ;j++){
for(int k = j+1 ;k<4;k++){
if(p[i].x == p[j].x && p[j].x == p[k].x){
printf("-1\n");
flag = 0;
break ;
}
else if(p[i].y == p[j].y && p[j].y == p[k].y){
printf("-1\n") ;
flag = 0;
break ;
}
}
if(!flag) break ;
}
if(!flag) break ;
}
if(flag){
printf("%d\n",abs(p[1].x - p[3].x) * abs(p[0].y - p[1].y)) ;
}
}
}
return 0;
}
олимпиадники такие олимпиадники
+6
#include "stdafx.h"
#include "hackery.h"
#include <cstdint>
#include <windows.h>
/*XXX*/
unsigned char udiv128Data[] =
{
0x48, 0x89, 0xD0, // mov rax,rdx
0x48, 0x89, 0xCA, // mov rdx,rcx
0x49, 0xF7, 0xF0, // div r8
0x49, 0x89, 0x11, // mov [r9],rdx
0xC3 // ret
};
/*XXX*/
unsigned char sdiv128Data[] =
{
0x48, 0x89, 0xD0, // mov rax,rdx
0x48, 0x89, 0xCA, // mov rdx,rcx
0x49, 0xF7, 0xF8, // idiv r8
0x49, 0x89, 0x11, // mov [r9],rdx
0xC3 // ret
};
unsigned __int64(__fastcall *udiv128)(unsigned __int64 numhi, unsigned __int64 numlo, unsigned __int64 den, unsigned __int64* rem);
__int64(__fastcall *sdiv128)(__int64 numhi, __int64 numlo, __int64 den, __int64* rem);
namespace {
struct Q {
Q() {
/*XXX*/
udiv128 = reinterpret_cast<unsigned __int64(__fastcall *)(unsigned __int64, unsigned __int64, unsigned __int64, unsigned __int64*)>(&udiv128Data[0]);
/*XXX*/
sdiv128 = reinterpret_cast<__int64(__fastcall *)(__int64, __int64, __int64, __int64*)>(&sdiv128Data[0]);
/*XXX*/
DWORD dummy;
/*XXX*/
VirtualProtect(udiv128Data, sizeof(udiv128Data), PAGE_EXECUTE_READWRITE, &dummy);
/*XXX*/
VirtualProtect(sdiv128Data, sizeof(sdiv128Data), PAGE_EXECUTE_READWRITE, &dummy);
}
} q;
}
Вот такая вот загогулина получилась по причине того что в 64-х битной Вижуал Студии нет встроенного асма, нет интринсика для простой асмовой команды, но мне вот надо именно полное деление 128-битного числа на 64-х битное именно с остатком и мне совершенно фиолетово на то что Майкрософт думает на тему вредности команды DIV и заменимости деления умножением на обратное. Да, и мне влом усложнять структуру проекта и линковать какие-то символы с внешнего асма.
+8
if(copytype==WHOLE_FILE) //whole file
О пользе комментариев
−2
unsigned strlen(const char *str)
{
const char *ptr;
for (ptr = str; *ptr; ++ptr);
return ptr - str;
}
char *strcpy(char *dst, const char *src)
{
while((*dst++ = *src++) != 0);
return dst;
}
namespace std
{
class string
{
public:
string(const char *str = 0) : size(str ? strlen(str) : 0)
{
this->str = new char[size + 1];
if(str) strcpy(this->str, str);
else this->str[0]=0;
}
string(const string &str) : size(str.size)
{
this->str = new char[size +1];
strcpy(this->str, str.str);
}
~string()
{
delete[] str;
}
const char* c_str() const
{
return str;
}
private:
char *str;
unsigned size;
};
class Cout
{
public:
Cout &operator<< (const char *str)
{
unsigned len = strlen(str);
asm volatile (
"movl $0x04, %%eax\n"
"movl $0x01, %%ebx\n"
"int $0x80\n"
:
: "c"(str), "d"(len));
return *this;
}
Cout &operator<< (const string &str)
{
operator<< (str.c_str());
return *this;
}
} cout;
}
int main()
{
std::string str = "Hello World!";
std::cout << str << "\n";
return 0;
}
Ещё 1 хелловорлд для линуха x86 на С++
+1
class CBaseEntity {
// ...
void (CBaseEntity ::*m_pfnThink)(void);
virtual void Think( void ) { if (m_pfnThink) (this->*m_pfnThink)(); };
// ...
// Ugly code to lookup all functions to make sure they are exported when set.
#ifdef _DEBUG
void FunctionCheck( void *pFunction, char *name )
{
if (pFunction && !NAME_FOR_FUNCTION((uint32)pFunction) )
ALERT( at_error, "No EXPORT: %s:%s (%08lx)\n", STRING(pev->classname), name, (uint32)pFunction );
}
BASEPTR ThinkSet( BASEPTR func, char *name )
{
m_pfnThink = func;
FunctionCheck( (void *)*((int *)((char *)this + ( offsetof(CBaseEntity,m_pfnThink)))), name );
return func;
}
// ...
};
// Ugly technique to override base member functions
// Normally it's illegal to cast a pointer to a member function of a derived class to a pointer to a
// member function of a base class. static_cast is a sleezy way around that problem.
#ifdef _DEBUG
#define SetThink( a ) ThinkSet( static_cast <void (CBaseEntity::*)(void)> (a), #a )
// ...
#else
#define SetThink( a ) m_pfnThink = static_cast <void (CBaseEntity::*)(void)> (a)
// ...
#endif
https://github.com/ValveSoftware/halflife/blob/5d761709a31ce1e71488f2668321de05f791b405/dlls/cbase.h
> it's illegal
В крестах всё легально, главное - попросить прощения в комментах...
+5
struct DateTime {
string x;
DateTime() { x = Now(); }
DateTime(const string& _x): x(_x) { if (BadDateTime) throw Exception(); }
operator string() { return x; }
};
string correctDateTime(const string& value)
{
try
{
DateTime(value); // if the value is bad, ctor will throw
return value;
}
catch (…) {}
return DateTime(); // and we replace bad DateTime with currentDateTime
}
Где ошибка?
+1
#include <iostream>
#include <conio.h>
#include <windows.h>
#include <vector>
using namespace std;
class Grey
{
private:
int n, Search;
vector<int> list;
void getData()
{
printf("Задайте колличество числел Фибоначчи -> ");
scanf("%d", &n);
}
void builderTable()
{
list.resize(n);
list[0]=1; list[1]=1;
printf("1 1 ");
for(int i=2; i<n; i++)
{
list[i]=list[i-1]+list[i-2];
printf("%d ", list[i]);
}
}
void search()
{
printf("\nПоказать елемент -> ");
scanf("%d", &Search);
while(Search<1 || Search>n)
{
printf(" Ошибка! Попробуйте еще раз -> ");
scanf("%d", &Search);
}
printf("Результат: %d", list[--Search]);
}
public:
void Fibonachi()
{
getData();
builderTable();
search();
}
};
main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Grey obj1;
obj1.Fibonachi();
}
Выводим числа Фибоначчи, после чего предоставляем значение нужного элемента)