-
+15
- 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
- 76
/**
* @brief Serializer generic interface.
*/
template<typename ValueType>
struct serializer
{
/**
* @brief Parses value from raw bytes.
* @param from byte buffer parse value from
*/
static ValueType parse(uint8_t *from);
/**
* @brief Writes value to raw byte buffer.
* @param value value to write
* @param dest destination buffer
*/
static void write(ValueType value, uint8_t *dest);
};
template<>
struct serializer<uint8_t>
{
static uint8_t parse(uint8_t *from)
{
return *from;
}
static void write(const uint8_t value, uint8_t *to)
{
*to = value;
}
};
template<>
struct serializer<uint16_t>
{
static uint16_t parse(uint8_t *from)
{
return (uint16_t)from[0] << 8 | from[1];
}
static void write(const uint16_t value, uint8_t *to)
{
to[0] = (value >> 8);
to[1] = value & 0xff;
}
};
template<>
struct serializer<uint32_t>
{
static uint32_t parse(uint8_t *from)
{
return from[0] << 24 | from[1] << 16 | from[2] << 8 | from[3];
}
static void write(const uint32_t value, uint8_t *to)
{
serializer<uint16_t>::write(value >> 16, to);
serializer<uint16_t>::write(value & 0xffff, to + 2);
}
};
template<>
struct serializer<uint64_t>
{
static uint64_t parse(uint8_t *from)
{
const uint32_t high = serializer<uint32_t>::parse(from);
const uint32_t low = serializer<uint32_t>::parse(from + 4);
return ((uint64_t) high << 32) | low;
}
static void write(const uint64_t value, uint8_t *to)
{
serializer<uint32_t>::write(value >> 32, to);
serializer<uint32_t>::write(value & 0xffffffff, to + 4);
}
};
Тут поднялась тема неуместного битолюбства... Решил поделиться одним из моих первых крестОпусов.
"кроссплатформенный hton(sl)".
roman-kashitsyn,
22 Января 2013
-
+21
- 1
angle_in_radians = acos(dot(normalize(o-a), normalize(o-b)));
Векторы такие сложные, а операции с ними так трудно запомнить, что даже игроделы не могут это сделать.
TarasB,
20 Января 2013
-
+8
- 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
#include <iostream>
struct Reader_msg;
template<class T>struct TMsg;
struct IMsg
{
virtual ~IMsg(){}
virtual void SendCast(Reader_msg& obj) = 0;
};
struct Some{};
struct Reader_msg
{
template<class T> void ReadMsg(T& msg)
{
//Здесь можно приляпать статик_ассерт
std::cout<<"ERROR UNKNOW TYPE \n";
}
void ReadMsg(int msg) { (void)msg; std::cout<<"TYPE IS INT\n"; }
void ReadMsg(float msg) { (void)msg; std::cout<<"TYPE IS FLOAT\n"; }
void ReadMsg(Some msg) { (void)msg; std::cout<<"TYPE IS SOME\n"; }
template<class T>void TakeMsg(T& msg) { msg.SendCast(*this); }
};
template<class T>struct TMsg:IMsg
{
T data;
void SendCast(Reader_msg& obj){ obj.ReadMsg(data); }
};
int main()
{
Reader_msg reader;
TMsg<int> msg1;
TMsg<float> msg2;
IMsg& msg3 = msg1;
IMsg& msg4 = msg2;
TMsg<Some> msg5;
TMsg<double> msg6;
reader.TakeMsg(msg1);
reader.TakeMsg(msg2);
reader.TakeMsg(msg3);
reader.TakeMsg(msg4);
reader.TakeMsg(msg5);
reader.TakeMsg(msg6);
}
http://liveworkspace.org/code/4FHDTq$6
LispGovno,
18 Января 2013
-
+14
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
/*!
* \brief Checks for a file existence
*/
inline bool IsFolderExist( const boost::filesystem::path &path )
{
return boost::filesystem::exists( path ) && boost::filesystem::is_directory( path );
}
/*!
* \brief Checks for a folder existence
*/
inline bool IsFileExist( const boost::filesystem::path &path )
{
return boost::filesystem::exists( path ) && boost::filesystem::is_regular_file( path );
}
Нашёл у себя в проекте. Кручу верчу - обмануть хочу). Про то, что даже правильные комментарии тут нафиг не нужны - я уже молчу.
suc-daniil,
17 Января 2013
-
+12
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
int n, a[n]; //n - количество элементов
void qs(int* s_arr, int first, int last) {
int i = first, j = last, x = s_arr[(first + last) / 2];
do {
while (s_arr[i] < x) i++;
while (s_arr[j] > x) j--;
if(i <= j) {
if (i < j) swap(s_arr[i], s_arr[j]);
i++;
j--; }}
while (i <= j);
if (i < last) {
qs(s_arr, i, last); }
if (first < j) {
qs(s_arr, first,j); }}
Оттуда
LispGovno,
17 Января 2013
-
+22
- 1
- 2
- 3
- 4
- 5
- 6
- 7
int sqr(int n)
{
unsigned int result=n>=0?n:-n;
n=result<<1;
do result+=n-=2; while(n);
return result;
}
Эта функция считает квадрат числа n. Писал не я, целей создания не знаю.
ales-hon-ne,
16 Января 2013
-
+13
- 1
- 2
- 3
- 4
- 5
- 6
- 7
void SetInterruptHandler(int id, unsigned int offset) {
__asm cli;
unsigned int *idt = (unsigned int*)0;
idt[id*2+0] = 0x00080000 | (offset & 0x0000FFFF);
idt[id*2+1] = 0x00008E00 | (offset & 0xFFFF0000);
__asm sti;
}
Как и обещал в http://govnokod.ru/12413#comment166763, выкладываю исходник говнолоадера, запускающего 32-х битный сишный код с дискетки: https://github.com/bormand/tryos, хотя судя по всему никому это не интересно...
Если кому-то все-таки придет в голову странное желание это собрать - нужна вижуалка (к сожалению код написан лет 5 назад, когда я юзал вижуалку) и nasm. Путь к nasm прописываем в Makefile, запускаем nmake, полученный floppy.dsk можно скормить виртуалбоксу, или же зарезать на дискету, если удастся вспомнить как она выглядит...
UPD: Скрин http://rghost.ru/43035733.view
bormand,
14 Января 2013
-
+23
- 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
volatile bool b;
class BoolKeeper
{
bool &fb;
public:
BoolKeeper(bool &b)
{
while (b);
b = true;
}
~BoolKeeper ()
{
b = false;
}
}
void Thread1
{
BoolKeeper ololo(b);
// что-то делаем
}
void Thread2
{
// что-то делаем
BoolKeeper ololo(b);
// что-то делаем, причём в этом месте нам важен факт, что Thread1 не выполняется
}
http://www.gamedev.ru/flame/forum/?id=171558
LispGovno,
13 Января 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
- 32
- 33
- 34
- 35
- 36
- 37
- 38
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
}
void main (){
int prog=0,n;
printf ("Which programm? ");
scanf ("%d",&prog);
if (prog==1){
int glas=0,sogl=0,j=0,k=0;
char *s,*l,*m;
s=(char*)calloc(20,sizeof(char));
l=(char*)calloc(20,sizeof(char));
m=(char*)calloc(20,sizeof(char));
flushall();
printf ("\nEnter text: ");
gets(s);
n=strlen(s);
/*Разбиваем на два массива исходную строку*/
for (int i=0;i<n;i++){
if(s[i]=='a'||s[i]=='q'||s[i]=='e'||s[i]=='y'||s[i]=='u'||s[i]=='i'||s[i]=='o'||s[i]=='j'){ l[j]=s[i]; glas++;j++;}
if(s[i]=='g'||s[i]=='f'||s[i]=='d'||s[i]=='s'||s[i]=='p'||s[i]=='t'||s[i]=='r'||s[i]=='w'||s[i]=='h'||s[i]=='k'||s[i]=='l'||s[i]=='z'||s[i]=='x'||s[i]=='c'||s[i]=='v'||s[i]=='b'||s[i]=='b'||s[i]=='n'||s[i]=='m'){ m[k]=s[i];sogl++;k++;}
}
printf ("\nDivided:\n");
puts(l);puts(m);
/*Сортируем каждый массив*/
char c=51,d=11;
for(j=0;j<sogl;j++) {for (int i=0;i<sogl;i++){if (m[i]>m[i+1] && (i+1)<sogl){d=m[i+1]; m[i+1]=l[i]; m[i]=d;}}}
for(j=0;j<glas;j++){ for (int i=0;i<glas;i++){if (l[i]>l[i+1] && (i+1)<glas){c=l[i+1]; l[i+1]=l[i]; l[i]=c;}}}
printf ("\nFinal:\n");
puts(l);
flushall();
puts(m);
}
Источник: http://otvety.google.ru/otvety/thread?tid=78a81d7ac11a8804&table=/otvety/topics?clk=lftpn&tab=wtmtosb
Цитата: "Задача: Написать программу для обработки строки следующим образом: вначале должны идти гласные буквы, упорядоченные по возрастанию (aaeeiioo), затем согласные, упорядоченные по убыванию.
Написал программу, она нормально сортирует гласные, но когда переходит к согласным - совершенно не работает."
10a10b1s,
12 Января 2013
-
+13
- 1
- 2
- 3
- 4
- 5
- 6
- 7
long a=1;
for(;;)
{
long *p_ex = new long;
*p_ex = a++;
std::cout << *p_ex << std::endl;
}
"У кого больше?" Или пытки компа утечкой памяти)
FreeLife,
12 Января 2013