std::cin.ignore
Мой частоиспользуемы трюк:
std::cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
по очистке входящего потока от мусора, при подключении заголовка windows.h работать переставал и компилятор страшно ругался:
1>d:\documents\visual studio 2010\projects\oop_lab1_cpp\oop_lab1_cpp\oop_lab1_cpp.cpp(52): warning C4003: not enough actual parameters for macro ‘max’ 1>d:\documents\visual studio 2010\projects\oop_lab1_cpp\oop_lab1_cpp\oop_lab1_cpp.cpp(52): error C2589: ‘(’ : illegal token on right side of ‘::’ 1>d:\documents\visual studio 2010\projects\oop_lab1_cpp\oop_lab1_cpp\oop_lab1_cpp.cpp(52): error C2143: syntax error : missing ‘)’ before ‘::’ 1>d:\documents\visual studio 2010\projects\oop_lab1_cpp\oop_lab1_cpp\oop_lab1_cpp.cpp(52): error C2059: syntax error : ‘)’
Выход оказался, как всегда, прост:
#include <windows.h> #undef max #include <limits>
КМП поиск (Алгоритм Кнута Морриса Пратта)
Разъяснения напишу позже.
int Find (string str, string templ) { int i, j, strlen, templlen; strlen = str.length(); templlen = templ.length(); int *d = new int[templlen]; // Вычисление префикс-функции i = 0; j = -1; d[0] = -1; while (i < templlen-1) { while ((j >= 0) && (templ[j] != templ[i])) j = d[j]; ++i; ++j; d[i] = (templ[i] == templ[j]) ? d[j] : j; } // Поиск строки for (i = 0, j = 0; (i < = strlen-1) && (j <= templlen-1); ++i,++j) while ((j >= 0) && (templ[j] != str[i])) j = d[j]; delete[] d; // Если совпадение есть - возвращаем позицию, // если нет - -1 return (j == templlen) ? i - j : -1; }
Вызывается:
Find(*str, *tmpl)
Где:
string* str; //строка, в которой ищем string* tmpl; //строка, которую ищем
String to DateTime DateTime to String
.NET Framework, C#
String to DateTime
// String to DateTime String MyString; MyString = "1999-09-01 21:34 PM"; //MyString = "1999-09-01 21:34 p.m."; //Depends on your regional settings DateTime MyDateTime; MyDateTime = new DateTime(); MyDateTime = DateTime.ParseExact(MyString, "yyyy-MM-dd HH:mm tt", null);
DateTime to String
//DateTime to String MyDateTime = new DateTime(1999, 09, 01, 21, 34, 00); String MyString; MyString = MyDateTime.ToString("yyyy-MM-dd HH:mm tt");
Ошибка линковки при объявлении класса
Итак, в процессе моего знакомства с таким замечательным инструментом как класс столкнулся с проблемой. Точнее даже с двумя.
Из динамического массива в статический.
Итак, есть задача:
Дана динамическая структура данных. Количество элементов заранее неизвестно. Необходимо передать данные в функцию, которая вообще понимает только статические массивы.
Пирамидальная сортировка
Сортировка:
1. Быстрая сортировка (англ. quicksort)
2. Сортировка Шелла (англ. Shell sort)
Поиск:
1. Прямой поиск (он же Простой, он же Алгоритм грубой силы)
2. Алгоритм Бойера-Мура-Хорспула
И новенькое:
Пирамидальная сортировка
Минимальное OpenGL приложение
По лабораторным в институте должен быть OpenGL. Решил попробовать заранее и был неприятно удивлен отсутсвием полного описания как всё-таки скомпилировать программу (самих исходников вагон и маленькая тележка). Тем более под VS2008.
Трудности разрешил успешно :)
Алгоритм Бойера-Мура-Хорспула
Сортировка:
1. Быстрая сортировка (англ. quicksort)
2. Сортировка Шелла (англ. Shell sort)
Поиск:
1. Прямой поиск (он же Простой, он же Алгоритм грубой силы)
И новенькое:
Алгоритм Бойера-Мура-Хорспула
Прямой поиск
И вновь алгоритмы. Тут уже есть:
1. Быстрая сортировка (англ. quicksort)
2. Сортировка Шелла (англ. Shell sort)
Добавим алгоритмов поиска. Итак:
Прямой поиск.
Быстрая сортировка
Продолжаю публиковать алгоритмы. Уже есть Сортировка Шелла
А сегодня у нас: Быстрая сортировка (англ. quicksort)