- 1
Block *** Cells;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+148
Block *** Cells;
Лаконичная семантика C++.
Глядишь на код -- и всё понятно: Cells - это указатель массива указателей на массивы указателей объектов класса Block.
А устно с первого раза хрен выговоришь.
+159
void shiftOrder(int* _order, int _count, int _column)
{
int i=_count-1;
while ( _order[i]!=_column )
i--;
_order[_count]=_order[i];
memcpy( _order+i, _order+i+1, (_count-i)*sizeof(int) );
return;
}
void returnOrder(int* _order, int _count, int _column)
{
int i=0;
int j=0;
int order[MAX_COLS];
for ( i=0; i< _count; i++)
{
if ( m_ColInfo[i].visible )
{
order[j]=i;
j++;
}
}
i=j;
while ( j<_count )
{
if ( _order[i-1]!=_column )
{
order[j]=_order[i-1];
j++;
}
i++;
}
memcpy(_order, order, MAX_COLS*sizeof(int));
return;
}
я знаю, это всё торфяники!1
+163
long GetMicroseconds();
CTvoid cLog::GetTime (char * acLocal, time_t tTime)
{
struct tm ltLocalTime;
struct tm * ptLocalTime;
tTime = time (NULL);
ptLocalTime = localtime_r (&tTime, <LocalTime);
sprintf(acLocal,"%04d%02d%02d %02d%02d%02d-%06ld",
ptLocalTime->tm_year+1900,
ptLocalTime->tm_mon+1,
ptLocalTime->tm_mday,
ptLocalTime->tm_hour,
ptLocalTime->tm_min,
ptLocalTime->tm_sec,
GetMicroseconds());
}
long GetMicroseconds()
{
struct timeval timeVal;
if (0 == gettimeofday( &timeVal, NULL ))
return timeVal.tv_usec;
return -1;
}
cLog::__Write(...)
{
/* ... */
tTime = time(NULL);
GetTime (acDataTime, tTime);
/* ... */
}
R&D дали задание добавить микросекунды ко всем таймстемпам в логах.
сказано - сделано.
ну ведь никто не говорил что таймстемпы должны быть еще и консистентными.
ЗЫ ну и time() надо вызвать раза два-три - для надёжности.
+164
LONG bShutdownCounter;
Существует много баталий на тему венгерской нотации, есть много за и много против, но это - просто шедевр :)
+163
if( ( (i&&z&&z!=1) || (!i&&z&&z==1) ) || j )
{
...
}
условие
+159
BYTE p1,p2,p3,p4;
CString p;
ipa.GetAddress(p1,p2,p3,p4);
p.Format("%d.", p1);
s = p;
p.Format("%d.", p2);
s += p;
p.Format("%d.", p3);
s += p;
p.Format("%d", p4);
s += p;
AfxMessageBox(s);
книга "Microsoft Visual Studio и MFC", автор Т. Сидорина
ранее были объявлены
CIPAddressCtrl ipa;
CString s;
s.Format ("%d.%d.%d.%d", p1, p2, p3, p4); //мы не исчем лёгких путей
+161
width ? width-- : width;
height ? height-- : height;
Ахуй нехуевый. Не говнокод, наверно, но всё же.
+148
#include <cstdio>
#include <memory.h>
#define maxn 18
char c[maxn][maxn];
int d[1 << maxn];
int main()
{
freopen("network.in", "rt", stdin);
freopen("network.out", "wt", stdout);
int n; scanf("%d", &n);
for (int i = 0; i < n; i++)
scanf("%s", c[i]);
memset(d, 0, sizeof(d));
for (int k = 0; k < (1 << n); k++)
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
if (c[i][j] == 'Y' && k & (1 << i) && k & (1 << j) && d[k - (1 << i) - (1 << j)] + 2 > d[k])
d[k] = d[k - (1 << i) - (1 << j)] + 2;
int max = 0;
for (int i = 0; i < (1 << n); i++)
if (d[i] > max)
max = d[i];
printf("%d\n", max);
return 0;
}
ACM-задачка на динамику по подмножествам.
Кто поймет, тому 5 ;)
+152
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
template<typename T> class myVector {
private:
T* data; // Указатель на массив с данными
int count; //Кол-во элементов в векторе
T maxv, minv; // Максимальный и минимальный элементы
void quicksort(T a[], const int& leftarg, const int& rightarg) const // Сортировочка
{
if (leftarg < rightarg) {
T pivotvalue = a[leftarg];
int left = leftarg - 1;
int right = rightarg + 1;
for(;;) {
while (a[--right] > pivotvalue);
while (a[++left] < pivotvalue);
if (left >= right) break;
T temp = a[right];
a[right] = a[left];
a[left] = temp;
}
int pivot = right;
quicksort(a, leftarg, pivot);
quicksort(a, pivot + 1, rightarg);
}
}
public:
myVector() : count(0), data(0), maxv(0), minv(0) // Я хз какие дефолтные значения задавать maxv и minv
{
}
~myVector() //Деструктор
{
if (data)
delete [] data;
}
void operator<<(const T &Value) //Оператор для добавления элемента в вектор
{
data = (T*)realloc(data, ++count * sizeof(T));
data[count-1] = Value;
if (maxv < Value) // Чтобы не искать максимальный и минимальный элемент, чекаем значение при добавлении в массив
maxv = Value;
else
if (minv > Value)
minv = Value;
}
T& operator[](const int &Index)//Оператор [] для доступа по индексу
{
if (Index >= count) throw 1;
return data[Index];
}
void orderAsc(T *result) const //Сортировка по возрастанию
{
if (!data) throw 1;
memcpy(result, data, sizeof(T) * count);
quicksort(result, 0, count - 1);
}
void orderDesc(T *result) const
{
if (!data) throw 1;
memcpy(result, data, sizeof(T) * count);
quicksort(result, 0, count - 1);
int swap, b = count;
for(int a = 0; a < --b; a++) {
swap = result[a]; result[a] = result[b]; result[b] = swap;
}
}
T max() const
{
if (!data) throw 1;
return maxv;
}
T min() const
{
if (!data) throw 1;
return minv;
}
};
int main()
{
myVector<int> v;
for (int i = 0; i < 10; i++)
v << rand() % 100; // Заполняем рандомными элементами
for (int i = 0; i < 10; i++)
printf("%d ", v[i]); // Выводим их
printf("\n");
int *arr = new int[10];
v.orderAsc(arr); //Сортируем по возрастанию
for (int i = 0; i < 10; i++)
printf("%d ", *(arr + i)); //Выводим результат
printf("\n");
v.orderDesc(arr); //Сортируем по убыванию
for (int i = 0; i < 10; i++)
printf("%d ", *(arr + i));//Выводим результат
printf("\n%d\n%d", v.max(), v.min()); //Выводим максимальный и минимальный элементы
delete [] arr;
}
Типа вот внезапно так захотелось создать простейший класс вектора. До STL-ного далеко
+172
map<pair<pair<int,int>, int>, vector<pair<pair<int,int>, pair<int,int> > > > m;
великолепно потом пробегать по коллекции