- 1
angle_in_radians = acos(dot(normalize(o-a), normalize(o-b)));
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+21
angle_in_radians = acos(dot(normalize(o-a), normalize(o-b)));
Векторы такие сложные, а операции с ними так трудно запомнить, что даже игроделы не могут это сделать.
+8
#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
+14
/*!
* \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 );
}
Нашёл у себя в проекте. Кручу верчу - обмануть хочу). Про то, что даже правильные комментарии тут нафиг не нужны - я уже молчу.
+12
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); }}
Оттуда
+22
int sqr(int n)
{
unsigned int result=n>=0?n:-n;
n=result<<1;
do result+=n-=2; while(n);
return result;
}
Эта функция считает квадрат числа n. Писал не я, целей создания не знаю.
+13
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
+23
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
+19
#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), затем согласные, упорядоченные по убыванию.
Написал программу, она нормально сортирует гласные, но когда переходит к согласным - совершенно не работает."
+13
long a=1;
for(;;)
{
long *p_ex = new long;
*p_ex = a++;
std::cout << *p_ex << std::endl;
}
"У кого больше?" Или пытки компа утечкой памяти)
+11
#include <QVector>
#include <QString>
template< class TYPE>
class call
{
public:
call( TYPE& vl ): value(vl){}
TYPE& value;
};
template< class TYPE>
call<TYPE> all( TYPE& vl )
{ return call<TYPE>(vl); }
template< class TYPE_OUT, class TYPE>
void operator << ( TYPE_OUT& out, call<TYPE>& in )
{
TYPE& value = in.value;
for( TYPE::iterator itr = value.begin() ; itr!=value.end(); itr++)
out << *itr;
}
//**********************************************************************
QVector<int> arr;
QVector<QString> arrStr;
class Cstream{} stream;
void operator << ( Cstream& , const int value)
{
printf("%i\n",value);
}
void operator << ( Cstream& , const QString& value)
{
printf("%s\n",value.toAscii().data());
}
int main(int argc, char *argv[])
{
for( int i=0; i<6;i++)
arr.push_back(i);
arrStr << "asd" << "sadas" << "sadsa";
stream << all(arr);
stream << all(arrStr);
return 0;
}
http://www.gamedev.ru/flame/forum/?id=171504
> @При копирование на говнокод сохранять авторство.