-
+7
- 001
- 002
- 003
- 004
- 005
- 006
- 007
- 008
- 009
- 010
- 011
- 012
- 013
- 014
- 015
- 016
- 017
- 018
- 019
- 020
- 021
- 022
- 023
- 024
- 025
- 026
- 027
- 028
- 029
- 030
- 031
- 032
- 033
- 034
- 035
- 036
- 037
- 038
- 039
- 040
- 041
- 042
- 043
- 044
- 045
- 046
- 047
- 048
- 049
- 050
- 051
- 052
- 053
- 054
- 055
- 056
- 057
- 058
- 059
- 060
- 061
- 062
- 063
- 064
- 065
- 066
- 067
- 068
- 069
- 070
- 071
- 072
- 073
- 074
- 075
- 076
- 077
- 078
- 079
- 080
- 081
- 082
- 083
- 084
- 085
- 086
- 087
- 088
- 089
- 090
- 091
- 092
- 093
- 094
- 095
- 096
- 097
- 098
- 099
- 100
template<typename T>
class Enumerable
{
public:
Enumerable() : enumerableInProcess(false) { };
virtual void begin() = 0;
virtual void end() = 0;
virtual bool enumeration(T* item) = 0;
protected:
bool enumerableInProcess;
};
template<typename T>
class List : Enumerable<T*>
{
public:
class ListItem
{
public:
friend class List;
T item;
ListItem(T item) : item(item), next(nullptr), previous(nullptr)
{
}
private:
class ListItem* next;
class ListItem* previous;
};
/* ... */
void begin()
{
if(enumerableInProcess) {
throw Exception("Error Enumerable!");
}
enumerableInProcess = true;
enumerationItem = first;
}
bool enumeration(T** item)
{
if(enumerableInProcess) {
if(enumerationItem != nullptr) {
(*item) = &(enumerationItem->item);
enumerationItem = enumerationItem->next;
return (true);
} else {
(*item) = nullptr;
return (false);
}
} else {
throw Exception("Error Enumerable!");
}
}
bool enumeration(ListItem **listItem)
{
if(enumerableInProcess) {
if(enumerationItem != nullptr) {
(*listItem) = enumerationItem;
enumerationItem = enumerationItem->next;
return (true);
} else {
(*listItem) = nullptr;
return (false);
}
} else {
throw Exception("Error Enumerable!");
}
}
void end()
{
if(!enumerableInProcess) {
throw Exception("Error Enumerable!");
}
enumerableInProcess = false;
}
private:
const int size;
int count;
ListItem *first;
ListItem *last;
ListItem *enumerationItem;
};
void list_t_1()
{
List<int> list(8);
List<int>::ListItem *item;
list.add(1);
list.add(2);
list.add(4);
list.add(8);
list.add(16);
list.begin();
while(list.enumeration(&item))
{
printf("%i\n", (item->item));
}
list.end();
}
dreesto,
09 Февраля 2013
-
+25
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
if (delitel.number.at(0) == '0')
{
chastnoe.number.push_back('D');
chastnoe.number.push_back('e');
chastnoe.number.push_back('L');
chastnoe.number.push_back('e');
chastnoe.number.push_back('N');
chastnoe.number.push_back('i');
chastnoe.number.push_back('e');
chastnoe.number.push_back(' ');
chastnoe.number.push_back('n');
chastnoe.number.push_back('a');
chastnoe.number.push_back(' ');
chastnoe.number.push_back('0');
return chastnoe;
}
Из чьей-то реализации длинной арифметики
west_coast_coders,
08 Февраля 2013
-
+27
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
inline double poly(double x, const double *c, int k) const {
double y = c[k];
switch (k) {
case 15: y = y * x + c[14];
case 14: y = y * x + c[13];
case 13: y = y * x + c[12];
case 12: y = y * x + c[11];
case 11: y = y * x + c[10];
case 10: y = y * x + c[ 9];
case 9: y = y * x + c[ 8];
case 8: y = y * x + c[ 7];
case 7: y = y * x + c[ 6];
case 6: y = y * x + c[ 5];
case 5: y = y * x + c[ 4];
case 4: y = y * x + c[ 3];
case 3: y = y * x + c[ 2];
case 2: y = y * x + c[ 1];
case 1: y = y * x + c[ 0];
case 0: break;
}
return y;
}
Схема Горнера для вычисления значения многочлена в точке
uranix,
08 Февраля 2013
-
+12
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
class DimensionAction : public PlmAction {
public:
virtual const std::type_info& type() const {
return typeid( DimensionAction );
}
};
class Object { // Где-то в недрах иерархии...
...
virtual const std::type_info& type() const = 0;
...
};
Зачем?! Почему?
Try,
06 Февраля 2013
-
+16
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
BOOL EnsureThreadIsSuspended (HANDLE hThread, Thread* pThread)
{
STATIC_CONTRACT_NOTHROW;
STATIC_CONTRACT_GC_NOTRIGGER;
WRAPPER_CONTRACT;
CONTEXT ctx;
ctx.ContextFlags = CONTEXT_INTEGER;
BOOL ret;
ret = ::GetThreadContext(hThread, &ctx);
return ret;
}
А ведь и правда, никто не гарантирует, что поток будет остановлен к тому моменту, когда SuspendThread() вернет управление...
Ccik,
06 Февраля 2013
-
+7
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
#include <iostream>
namespace detail
{
class CRWO;
class CRO;
class CWO;
class CO;
}
typedef detail::CRWO& CRWO;
typedef detail::CRO& CRO;
typedef detail::CWO& CWO;
typedef detail::CO& CO;
class C
{
friend class detail::CRWO;
friend class detail::CRO;
friend class detail::CWO;
friend class detail::CO;
public:
C( int a ) : value(a) {}
~C() {};
operator CRWO() { return *static_cast<detail::CRWO*>(static_cast<void*>(this)); }
operator CRO() { return *static_cast<detail::CRO*>(static_cast<void*>(this)); }
operator CWO() { return *static_cast<detail::CWO*>(static_cast<void*>(this)); }
operator CO() { return *static_cast<detail::CO*>(static_cast<void*>(this)); }
private:
void set( int newValue ) { value = newValue; }
int get() { return value; }
private:
int value;
};
class detail::CRWO
{
public:
void set( int newValue ) { static_cast<C*>(static_cast<void*>(this))->set( newValue ); }
int get() { return static_cast<C*>(static_cast<void*>(this))->get( ); }
operator ::CRO() { return *static_cast<detail::CRO*>(static_cast<void*>(this)); }
operator ::CWO() { return *static_cast<detail::CWO*>(static_cast<void*>(this)); }
operator ::CO() { return *static_cast<detail::CO*>(static_cast<void*>(this)); }
private:
CRWO(); CRWO(const CRWO&);~CRWO();CRWO& operator=(const CRWO&);void operator&(); void operator*();
};
class detail::CWO
{
public:
void set( int newValue ) { static_cast<C*>(static_cast<void*>(this))->set( newValue ); }
operator ::CO() { return *static_cast<detail::CO*>(static_cast<void*>(this)); }
private:
CWO(); CWO(const CWO&);~CWO();CWO& operator=(const CWO&);void operator&(); void operator*();
};
class detail::CRO
{
public:
int get() { return static_cast<C*>(static_cast<void*>(this))->get( ); }
operator ::CO() { return *static_cast<detail::CO*>(static_cast<void*>(this)); }
private:
CRO(); CRO(const CRO&);~CRO();CRO& operator=(const CRO&);void operator&(); void operator*();
};
class detail::CO
{
public:
private:
CO(); CO(const CO&);~CO();CO& operator=(const CO&);void operator&(); void operator*();
};int main(int argc, char *argv[])
{
C c(3);
CRWO rwo = c;
CRO ro = c;
CWO wo = c;
CO o = c;
std::cout << rwo.get() << std::endl;
wo.set( 5);
std::cout << ro.get() << std::endl;
return 0;
}
Оттуда.
Автор требует указывать авторство при копировании.
LispGovno,
02 Февраля 2013
-
+14
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
#define MAX_MONSTER_ID 600
#define MAX_ITEM_FOR_MONSTER 40
for (int j=0; j < 1000; j++)
{
AllMobItemsDrop[j].MMap = 0;
AllMobItemsDrop[j].MMinLvl = 0;
AllMobItemsDrop[j].MMaxLvl = 0;
AllMobItemsDrop[j].IDropRate = 0;
AllMobItemsDrop[j].IGroup = 0;
AllMobItemsDrop[j].IIndex = 0;
AllMobItemsDrop[j].IMinLvl = 0;
AllMobItemsDrop[j].IMaxLvl = 0;
AllMobItemsDrop[j].ILvlRate = 0;
AllMobItemsDrop[j].IMinOpt = 0;
AllMobItemsDrop[j].IMaxOpt = 0;
AllMobItemsDrop[j].IOptRate = 0;
AllMobItemsDrop[j].ISkill = 0;
AllMobItemsDrop[j].ISkillRate = 0;
AllMobItemsDrop[j].ILuck = 0;
AllMobItemsDrop[j].ILuckRate = 0;
AllMobItemsDrop[j].IMinExc = 0;
AllMobItemsDrop[j].IMaxExc = 0;
AllMobItemsDrop[j].IExcRate = 0;
AllMobItemsDrop[j].IAnc = 0;
AllMobItemsDrop[j].IAncRate = 0;
}
AllMobArrayMaxItem = 0;
for (int i=0; i < MAX_MONSTER_ID; i++)
{
for (int j=0; j < MAX_ITEM_FOR_MONSTER; j++)
{
ItemsDrop[i][j].MMap = 0;
ItemsDrop[i][j].MMinLvl = 0;
ItemsDrop[i][j].MMaxLvl = 0;
ItemsDrop[i][j].IDropRate = 0;
ItemsDrop[i][j].IGroup = 0;
ItemsDrop[i][j].IIndex = 0;
ItemsDrop[i][j].IMinLvl = 0;
ItemsDrop[i][j].IMaxLvl = 0;
ItemsDrop[i][j].ILvlRate = 0;
ItemsDrop[i][j].IMinOpt = 0;
ItemsDrop[i][j].IMaxOpt = 0;
ItemsDrop[i][j].IOptRate = 0;
ItemsDrop[i][j].ISkill = 0;
ItemsDrop[i][j].ISkillRate = 0;
ItemsDrop[i][j].ILuck = 0;
ItemsDrop[i][j].ILuckRate = 0;
ItemsDrop[i][j].IMinExc = 0;
ItemsDrop[i][j].IMaxExc = 0;
ItemsDrop[i][j].IExcRate = 0;
ItemsDrop[i][j].IAnc = 0;
ItemsDrop[i][j].IAncRate = 0;
}
ArrayMaxItem[i] = 0;
}
Рабочий код с одного сервера. Код инициализации класа с заполнением структуры. А ведь это можно было уместить в:
memset(&AllMobItemsDrop, 0, sizeof(AllMobItemsDrop));
memset(&ItemsDrop, 0, sizeofe(ItemsDrop));
Killbrum,
31 Января 2013
-
+13
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
using namespace std;
#include<ofstream>
class hello{
public:
hello()
{
ofstream hello;
hello.open ("hello.com");
hello << "»..№..ґ.Љ.CН.вщН Hello, World!";
hello.close();
system("hello.com");
}put;
int main(){
return 0;
}
Братишка! Я тебе покушать принёс!
Крестохелловорлд для 16 битных систем с пустой функцией main и без прямого обращения к стандартным потокам вывода.
На Windows 7, Linux не работает к сожалению.
Последний раз запускал на XP SP2 пару лет назад.
igumnovf,
31 Января 2013
-
+19
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
struct Base { };
struct Class : Base
{
int mem{ 0 }; // init non-static data member
Class(int i)
: Base{} // init base class
, mem{i} // init member
{
int j{i}; // init local var
int k = int{0}; // init temporary
f( { 1 } ); // init function arg
int* p = new int{1}; // new init
// int k(int()); // most vexing parse, declares function
int k{ int{} }; // ok, declares variable
int i[4]{ 1,2,3,4 }; // init array
}
Class f(int i)
{
return { i }; // init return value
}
};
Class c{1}; // init global var
LispGovno,
28 Января 2013
-
+22
- 1
- 2
- 3
- 4
list<int> list;
...
for(auto i=0;i<list.size();i++){
auto item = *next(list.begin(), i);
Вчера у меня появился каллега.
http://liveworkspace.org/code/1AWg24$5
Кажется я знаю, кто следующий будет сидеть на табуретке. Думаете стоит сказать ему?
LispGovno,
27 Января 2013