Наследование – это один из механизмов объектно-ориентированного программирования. Важно заметить, что в наше время практически каждый современный язык поддерживает эту парадигму. Но стоит сказать, что в C++ есть некоторые особенности в возможностях этого механизма.
Далее »
Наследование в C++: чуть глубже, чем обычно
Дата: 26th Июль 2010. Автор: Jester. Рубрика: cpp, ООПМетки: cpp, наследование, ООП
Smart GWT: первые шаги
Дата: 25th Июль 2010. Автор: Jester. Рубрика: GWT, JavaМетки: GWT, Java, Smart GWT
В этой статье я бы хотел рассказать о фреймворке Google Web Toolkit (GWT, а точнее о его расширении – Smart GWT, но сути не меняет). Для начала немного теории.
HTML 5: Canvas
Дата: 7th Июль 2010. Автор: KAS. Рубрика: HTMLМетки: Canvas, HTML, html5, JavaScript
В HTML 5 появилось много интересных и нужных возможностей, которых нехватало и они были реализованы например flash’ем… Собственно статья о возможности рисовать в canvas
На картинках изображены иерархии объектов DOM

на данной картинке присутствуют не все объекты DOM т.к. они почти не используются (такие как images и forms).
Следующая картинка более полная
JavaScript: случайные числа
Дата: 2nd Июль 2010. Автор: KAS. Рубрика: JavaScriptМетки: JavaScript, random
Для генерации случайных (ну на самом деле псевдослучайных) чисел нам потребуется две функции: Math.random() – генерирует случайное число от 0 до 1, Math.floor() – отбрасывает дробную часть.
Генерируем случайные числа от 0 до n:
function rand(n){ return Math.floor(Math.random()*n); }
Генерируем случайные числа от n до m:
function rand2(n, m){ return Math.floor(Math.random()*(m-n))+n; }
Небольшой пример использования рандомных чисел:
function aforizm() { arr=new Array(); arr[0]="Если ты мудр, не противоречь богачу, правителю, ребенку, старику, аскету, мудрецу, женщине, дураку и учителю."; arr[1]="Жестокость — даже к злым — ведет в ад. Что же говорить о жестокости к добрым?"; arr[2]="Избегай дел, зависящих от других; стремись лишь к тому, что зависит от тебя самого."; arr[3]="Женщины учены от природы, мужчины — от книг."; arr[4]="Добродетель в том, чтобы делать ближним добро и не причинять зла. А делать ближним добро — это делать для них то, чего желал бы самому себе."; return arr[Math.floor(Math.random()*5)]; }
Альтернативная генерация рандомных чисел:
function rand(){ now = new Date(); return (now.getSeconds())%10; }
Насколько хорошо твой браузер поддерживает HTML5
Дата: 14th Июнь 2010. Автор: lollypop_69. Рубрика: Интересные_вещиМетки: html5

Сайт html5test протестирует ваш браузер на совместимость с html5. Тестирование производится по различным категориям и в результате выдает сумму всех баллов.
Для примера тест 3-ех браузеров на совместимость с html5:
- Opera 10.53 – 129 points
- Firefox 3.6.3 – 139 points
- Chrome 6.0.427 dev – 217 points
Алгоритм Дейкстры
Дата: 9th Июнь 2010. Автор: KAS. Рубрика: АлгоритмыМетки: алгоритмы, Дискретная математика, ДМ
Алгоритм нахождения расстояния от источника до всех остальных вершин в графе с неотрицательными весами дуг — метод Дейкстры.
Далее »
Алгоритм Форда-Белмана
Дата: 8th Июнь 2010. Автор: KAS. Рубрика: АлгоритмыМетки: алгоритмы, Дискретная математика, ДМ
Алгоритм Форда-Белмана для поиска кратчайшего расстояния в графе.
private void algFordaBelmana() { int s=Convert.ToInt32(textBox5.Text) - 1; //произвольная вершина графа, которая послужит началом пути int[] D=new int[n]; initGraph(); initMatrixWeight(); if (s < 0 || s >= n) return; for (int i = 0; i < n; i++) { D[i] = A[s, i]; } D[s] = 0; for (int k = 0; k < (n - 1); k++) { for (int v = 0; v < n; v++) { for (int u = 0; u < n; u++) { if (v != s || u != s || u!=v) { D[v] = min(D[v], D[u] + A[u, v]); }//if }//for }//for }//for textBox6.Clear(); for (int i = 0; i < n; i++) { textBox6.Text += "Кратчайшее расстояние от V" + (s + 1) + " до V" + (i + 1) + " = " + D[i] + "\r\n"; } }//algFordaBelmana()
Циклом Гамильтона называется путь проходящий через каждую вершину графа только 1 раз.
Псевдокод:
procedure ГАМИЛЬТ(k) {генерация всех гамильтоновых циклов, являющихся расширением последовательности X[1], . . ., X[k – 1]: массив X — глобальный } begin for y принадлежит ЗАПИСЬ [X[k – 1]] do if (k = n +1) and (y = v0) then write(X[1], . . ., X[n], v0) else if DOP[y] then begin X[k] := y; DOP[y] := ложь; ГАМИЛЬТ (k +1); DOP[y] := истина end end; { ГАМИЛЬТ } begin { главная программа } for v принадлежит V do DOP[v] := истина; { инициализация } X[1] := v0; { v0 = произвольная фиксированная вершина графа } DOP[v0] := ложь; ГАМИЛЬТ (2); end.
Рисуем стрелку
Дата: 30th Май 2010. Автор: KAS. Рубрика: АлгоритмыМетки: source, алгоритмы, исходники
Код для отрисовки стрелочки аля вектор
//by Makar double u = Math.Atan((double)(y2 - y1) / (x2 - x1)); if (x2 < x1) { u += Math.PI; } int x = Math.Abs(x2 - x1) / 2 + Math.Min(x1, x2); int y = Math.Abs(y2 - y1) / 2 + Math.Min(y1, y2); if (y1 >= y2) { gr.DrawLine(pen, x, y, x - 25 * (float)Math.Cos(u + 0.2), y - 25 * (float)Math.Sin(u + 0.2)); gr.DrawLine(pen, x, y, x + 25 * (float)Math.Cos(u - 0.2 + Math.PI), y + 25 * (float)Math.Sin(u - 0.2 + Math.PI)); } if (y2 > y1) { gr.DrawLine(pen, x, y, x + 25 * (float)Math.Cos(u + 0.2 + Math.PI), y + 25 * (float)Math.Sin(u + 0.2 + Math.PI)); gr.DrawLine(pen, x, y, x - 25 * (float)Math.Cos(u - 0.2), y - 25 * (float)Math.Sin(u - 0.2)); }
