Сортировка вставками

Август 9th, 2011 § 0 comments § Прямая ссылка

Хочу сделать цикл постов, о сортировках разными методами и первый из них будет метод сортировки вставками, это не самый лучший метод т.к. его асимптотическая сложность составляет O(n^2), что довольно долго, данный метод может подойти для сортировки малого набора данных в частично отсортированном массиве. Данная сортировка относится к классу устойчивых т.е. не меняет порядок следование элементов значения, которых равны.

Ниже приведен код на C++ (на C# его можно перевести без труда так что оставлю это для тебя xDDD).

Continue reading “Сортировка вставками” »

Шаблон проектирование Декоратор(Decorator || Wraper)

Август 5th, 2011 § 1 comment § Прямая ссылка

Сегодня мы разберем шаблон проектирования Декоратор по другому его еще называю Врапер. Этот паттерн относится к группе структурных применяется для расширения функциональность и является гибкой альтернативой порожадению подклассов. Ниже привожу исходник на C++/C#

Continue reading “Шаблон проектирование Декоратор(Decorator || Wraper)” »

Шаблон проектирования Стратегия(Strategy)

Июль 22nd, 2011 § 1 comment § Прямая ссылка

Сегодня разберем паттерн проектирования Стратегия (Strategy). Паттерн относится к группе паттернов поведения. Применяется в том случае когда нам надо инкапсулировать семейство алгоритмов, подставляя один в место другого, меня алгоритм вне зависимости от клиента. Ниже приводу пример на C++/C#.

Continue reading “Шаблон проектирования Стратегия(Strategy)” »

Шаблон проектирования Компоновщик(Composite)

Июль 20th, 2011 § 0 comments § Прямая ссылка

Начал изучать паттерны и первый который мне встретился это паттерн Компоновщик (Composite). Особенности паттерна относится к структурным паттернам, применяется для группировки объектов в древовидные структуры, позволяет клиентам работать с группой так же как и с одним. Ниже приведу реализацию на С++ и С#.

Continue reading “Шаблон проектирования Компоновщик(Composite)” »

Реализация стека на массиве

Июнь 2nd, 2011 § 0 comments § Прямая ссылка

Ну вот это первая (в изучении ) и основная структура данных а именно стек, относится к классу LIFO (Last In First Out). Здесь он реализован на массиве, фиксированного размера. Что избежать ограничения фиксированного размера, стек можно сделать на списке. Ниже приведен исходник.

Continue reading “Реализация стека на массиве” »

План работы на месяц.

Май 31st, 2011 § 0 comments § Прямая ссылка

Думаю это мысль созрела вовремя, сейчас 31 мая мне нужно составить план работы на месяц. Щас очень много гуглится и вот уже окрестился список того что я хочу знать и уметь, вообще он уже появился давно, но следую своему прошлому положительному опыту с высшей математикой, стоит цели изложить попунктно, ставить при этом перед собой достижимые. Ну что же приступим:

  • Изучить основы работы с сокетами в C/C#
  • Научится работать с XML C/C#
  • Изучить спецификацию HTTP
  • Знать и уметь реализовывать все основные структуры данных на C

Я думаю это вполне реальные цели за месяц. Для того что бы проверить себя и свой уровень знаний, думаю что стоит поставить своей целью не которые конечные продукты для этого. Первое по работе с сетями, это создать свою тулзу для автозаливки файлов на сендспейс. По части XML научится с ним работать, формировать и парсить документы. Про структуры данных по мере изучения исходники буду выкладывать.

Пример создания простого модального окна на WinAPI

Март 16th, 2011 § 0 comments § Прямая ссылка

Частенько приходится создавать разные тулзы и я написал, что-то вроде шаблона, что бы не переписывать одно и тоже по 10-ть раз. Здесь сразу подключаю process.h может это не тру и стоит делать все WinAPI’евым но уже больше привычка, сразу создаю прототип функции потока. Одна глобальная переменная, он же хендл нашего окна, это для того чтобы в потоке можно было взаимодействовать с формой, может есть и более изящный вариант хз, если есть жду в коменты. У меня по дефолту подцепляется файл с ресурсом,  вам конечно надо будет его создать самому, либо выставить идентификатор формы как у меня IDD_DIALOG1 (это собственно дефолтное название диалога, при создании его в VS2010), либо заменить на свой.Под катом сам код.

Continue reading “Пример создания простого модального окна на WinAPI” »

Использование curl и с++ [часть 1]

Февраль 27th, 2011 § 4 comments § Прямая ссылка

Давно работаю с либой, но все еще есть чему по учится, хотел бы систематизировать свои знания и в том числе поделится ими. На просторах рунета примеров не очень то много, если конечно не брать php+libcurl их то завались, но щас речь не о PHP. Первое что нам нужно это собственно подключить либу к нашему проекту для этого нам нужны dll’ки, header’ы и lib файл вот тут архивчик на момент написания он был последним. Собираем мы все под Visual Studio под Builder его тоже собрать можно (здесь идет много ругательств), но при статической сборке lib файл нужно будет обработать 2 тулзами они идут в поставки Builder’а, как будет возможность я припишу в конце статейки что и в какой последовательности делать с богопротивным Builder’ом для работы libcurl на нем (опять же напомню что я говрю о статической линковке, никто не отменял динамический подгурз либы).

Continue reading “Использование curl и с++ [часть 1]” »

Разделим акки

Февраль 27th, 2011 § 0 comments § Прямая ссылка

Бывает нужно что либо отчекать в сети и вот у тебя есть много акков две функции, который тебе в этом помогут. Функция replaceAll нужна если не уверен что разделитель будет один, если же такая уверенность есть, то она и не нужна.

struct loginpass
{
 string login;
 string pass;
}
string& replaceAll(string& context, const string& from, const string& to)
{
 size_t lookHere = 0;
 size_t foundHere;
 while((foundHere = context.find(from, lookHere)) != string::npos)
 {
 context.replace(foundHere, from.size(), to);
 lookHere = foundHere + to.size();
 }
 return context;
}

bool GetLoginPass(string& data,loginpass& ids)
{
 size_t nPos;
 replaceAll(data,";",":");
 nPos=data.find(":");
 if(string::npos==nPos)
 return false;
 ids.login=data.substr(0,nPos);
 ids.pass=data.substr(nPos+1,data.size());
 return true;

}

С++ base64 encode decode

Февраль 25th, 2011 § 0 comments § Прямая ссылка

Как -то давно требовалось долго искал, в результате нашел так что забирайте.


string char2hex( char dec )
{
 char dig1 = (dec&0xF0)>>4;
 char dig2 = (dec&0x0F);
 if ( 0<= dig1 && dig1<= 9) dig1+=48;    //0,48inascii
 if (10<= dig1 && dig1<=15) dig1+=97-10; //a,97inascii
 if ( 0<= dig2 && dig2<= 9) dig2+=48;
 if (10<= dig2 && dig2<=15) dig2+=97-10;

 string r;
 r.append( &dig1, 1);
 r.append( &dig2, 1);
 return r;
}

string urlencode(const string &c)
{

 string escaped="";
 int max = c.length();
 for(int i=0; i<max; i++)
 {
 if ( (48 <= c[i] && c[i] <= 57) ||//0-9
 (65 <= c[i] && c[i] <= 90) ||//abc...xyz
 (97 <= c[i] && c[i] <= 122) || //ABC...XYZ
 (c[i]=='~' || c[i]=='!' || c[i]=='*' || c[i]=='(' || c[i]==')' || c[i]=='\'')
 )
 {
 escaped.append( &c[i], 1);
 }
 else
 {
 escaped.append("%");
 escaped.append( char2hex(c[i]) );//converts char 255 to string "ff"
 }
 }
 return escaped;
}

string urldecode(const string &c)
{
 string buffer = "";
 int len = c.length();

 for (int i = 0; i < len; i++) {
 int j = i ;
 char ch = s.at(j);
 if (ch == '%'){
 char tmpstr[] = "0x0__";
 int chnum;
 tmpstr[3] = c.at(j+1);
 tmpstr[4] = c.at(j+2);
 chnum = strtol(tmpstr, NULL, 16);
 buffer += chnum;
 i += 2;
 } else {
 buffer += ch;
 }
 }
 return buffer;
}

Смотреть фильмы онлайн