- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
class widget {};
class gadget {};
class bobo {};
int main()
{
widget w(gadget(), bobo()); //Прототип функции или переменная? хмм
return 0;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+2
class widget {};
class gadget {};
class bobo {};
int main()
{
widget w(gadget(), bobo()); //Прототип функции или переменная? хмм
return 0;
}
хмм...
+10
template <int N> void f(int v)
{
(void *)v;
}
int main()
{
int s = 123;
int k = 1234;
f<11>(k);
s<11>(k);
return 0;
}
Плюсы, такие плюсы.
0
if ((*entry_it)->flags & (kNoAntialiasRenderFlag == kNoAntialiasRenderFlag)) {
...
}
+4
typedef std::map<std::string, WORD> Values;
struct Less {
bool operator()(Values::value_type const& left
, Values::value_type const& right) const {
if (right.second == TEMPERATURE_UNKNOWN
|| left.second == TEMPERATURE_UNKNOWN) {
return false;
}
short const signed_left = *reinterpret_cast<short const*>(&left.second);
short const signed_right = *reinterpret_cast<short const*>(&right.second);
bool const result = signed_left < signed_right;
return result;
}
};
Строки 10 и 11.
20+ опыта в С++ у чувачка.
+4
template<size_t n>
struct counterNumber {
char data[n+1];
};
template<size_t index, size_t val>
counterNumber<val> magic(counterNumber<index>, counterNumber<val>);
#define COUNTER_READ() \
(sizeof( \
magic(counterNumber<1>(), \
magic(counterNumber<2>(), \
magic(counterNumber<4>(), \
magic(counterNumber<8>(), \
magic(counterNumber<16>(), \
magic(counterNumber<32>(), \
magic(counterNumber<64>(), \
magic(counterNumber<128>(), counterNumber<0>())))))))))-1)
#define COUNTER_INC() \
counterNumber<COUNTER_READ()+1> magic( \
counterNumber<(COUNTER_READ()+1)&~COUNTER_READ()>, \
counterNumber<(COUNTER_READ()+1)&COUNTER_READ()>)
#include <iostream>
using namespace std;
#define TO_STRING(x) #x
#define REG_FUNCTIONAL(headFunction) \
template<> \
constexpr auto foo< COUNTER_READ() >() \
{ \
return TO_STRING(headFunction); \
} \
COUNTER_INC(); \
headFunction
template<size_t n>
constexpr auto foo(void){return "";}
REG_FUNCTIONAL(void function(int a)){(void)a;}
REG_FUNCTIONAL(void function1(int a)){(void)a;}
// your code goes here
template<size_t n>
std::string callFoo()
{
return std::string(foo<n>())+callFoo<n-1>();
}
template<>
std::string callFoo<0>()
{
return std::string(foo<0>());
}
int main() {
std::cout<<callFoo<COUNTER_READ()-1>();
return 0;
}
https://ideone.com/bASDDc
+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 и заменимости деления умножением на обратное. Да, и мне влом усложнять структуру проекта и линковать какие-то символы с внешнего асма.