Старшая сестра Google

В Китае разгарается скандал, связанный с заявлением Goolge о том, что поисковик может покинуть эту страну из-за участившихся хакерских атак на сервера корпарации. И вот местные студенты-умельцы уже запустили клон Goojje, что с китайского языка можно перевести как "старшая сестра Гугл". Правда на страницах сайта кроме саой поисковой строки есть и призыв к Гуглу не покидать Китай. Интересно посмотреть, чем же закончится эта история.

Ваш отзыв

Поиск по дереву TTreeView в Delphi

Небольшая, но полезная функция, думаю будет полезна многим, кто использует в своих программах разветвленные структуры данных и компонент TTreeView. У меня, правда, установлен TRzTreeView, но в данном случае разницы никакой не будет. Итак, у меня стоит задача поиска элемента по дереву. Использую я следующую функцию


function Search(Tree: TRzTreeView; Target: string): integer;
var
  Noddy: TTreeNode;
  Searching: boolean;
  I: Integer;
begin
   I := -1;
   Noddy := Tree.Items[0];
   Searching := true;
   while (Searching) and (Noddy <> nil) do
   begin
      if Noddy.Text = Target then
      begin
         Searching := false;
         Tree.Selected := Noddy;
         Tree.SetFocus;
      end
      else Noddy := Noddy.GetNext;
      Inc(I);
  end;
   result := I
end;

Здесь поиск происходит по всему дереву и функция возврещает порядковый номер элемента, начиная с самого корня. Если ничего не найдено, то функция вернет -1.
Иногда мне треуется искать не по всему дереву, а только на каком-нибудь определнном уровне. У узлов дерева TTreeNode есть свойство уровень Level, которое и определяет уровень вложенности узла. Модифицируем нашу функцию следующим образом.


function Search(Tree: TRzTreeView; Noddy: TTreeNode;
  Target: string): integer;
var
  Searching: boolean;
  I: Integer;
begin
   I := 0;
   Searching := true;
   while (Searching) and (Noddy <> nil) do
   begin
      if Noddy.Text = Target then
      begin
         Searching := false;
         Tree.Selected := Noddy;
         Tree.SetFocus;
      end
      else
      begin
         Noddy := Noddy.getNextSibling;
         inc(I)
      end;
   end;
   result := I
end;

В результате получим индекс относительно первого элемента, который находится в заданной ветке дерева.

Отзывов (1)

Генерация двоичной последовательности в естественном порядке

Итак, сегодня наша задача формулируется следующим образом. Для заданной длинны кода расчитать все возможные двоичные кодовые комбинации. То есть, другими словами, нам неоходимо сгенерировать двоичную последовательности в естественном порядке. Формула, которая нам потребуется для вычисления выглядит следующим оразом n!/(n-2)! (открывай учебник по коминаторике). А реализовывать алгоритм удем на языке С++.


#include < iоstream >
#include < cоnio.h >

using namespace std;

int main()
{
int A[16]={0};
int n=0,i;
bool check=true;

cout<<"enter the number of elements:";
cin>>n;
--n; //уменьшение для того, что в С отчёт елементов масива идёт с 0

while (check==true)
{
for (i=0; i<=n; i++) //вывод каждого из вариантов
cout << A[i] << " ";
char c = 'a';
cout << "{ ";
for (i=0; i<=n; i++)
{
if(A[i]==1)cout << c << " ";
c++;
}
cout << "}" << endl; 

if (A[n]==0)
A[n]=1;
else
{
i=n;
while ( (A[i]!=0) && (check==true) )
{
A[i]=0;
--i;
if (i==-1)
{
i=0;
for (i=0; i<n; i++)
A[i]=1;
check=false;
}
}
A[i]=1;
}
}
getch();
return 0;
}

-----------------------------------------
Несколько полезных ссылок для тех, кто занимается ремонтом своей квартиры. Тем, кто ищет магазин плитки из Испании с каталогом товаров и большим выбором, удет интересно посетить ресурс www.keramogranit.ru. Здесь вы найдете керамическую плитку, керамогранит, мозаика, ступени и многое многое другое.

Обо всем самом интересном в сети вам расскажет сайт Чистый Интернет. Все самые неординарные новости и события собраны в одном месте.

В последнее время у нас в городе стали невероятно популярны сдвижные ворота, так как они выглядят очень элегантно и очень долго сохраняют приятный внешний вид.

Ваш отзыв

Вычисление определителя 4 порядка на C++

Для вычисления определителя матрицы четвертого порядка воспользуемся рекурсией. Алгоритм решения такой:

|a11 a12 a13 a14|
|a21 a22 a23 a24|
|a31 a32 a33 a34|
|a41 a42 a43 a44|

= (-1)^(1+1) * a11 * |a22 a23 a24| +
|a32 a33 a34|
|a42 a43 a44|

+ (-1)^(1+2) * a12 * |a21 a23 a24| +
|a31 a33 a34|
|a41 a43 a44|

+ (-1)^(1+3) * a13 * |a21 a22 a24| +
|a31 a32 a34|
|a41 a42 a44|

+ (-1)^(1+4) * a14 * |a21 a22 a23|
|a31 a32 a33|
|a41 a42 a43|

Далее определитель 3-го порядка аналогично:

|a11 a12 a13|
|a21 a22 a23|
|a31 a32 a33|

= (-1)^(1+1) * a11 * |a22 a23| +
|a32 a33|

+ (-1)^(1+2) * a12 * |a21 a23| +
|a31 a33|

+ (-1)^(1+3) * a13 * |a21 a22|
|a31 a32|

Далее определитель 2-го порядка:

|a11 a12|
|a21 a22|

= (-1)^(1+1) * a11 * |a22| +

+ (-1)^(1+2) * a12 * |a21|

А определитель 1-го порядка равен элементу:

|a11| = (-1)^(1+1) * a11 = a11

Вот готовое решение на языке C++, пользуйтесь:


#pragma hdrstop
#pragma argsused
#include
#include
#include

#include 

int A[4][4]={{2,5,3,8},
{7,3,9,2},
{1,6,0,2},
{5,2,8,7}};

int Det(int N, int M[4][4])
{
if (N == 1)
return M[0][0];
else
{
int M1[4][4];
int i, x, X, Y, Res = 0;
for (i = 0; i < N; i++)
{
for (Y = 1; Y < N; Y++)
{
x = 0;
for (X = 0; X < N; X++)
if (X != i)
M1[Y-1][x++] = M[Y][X];
}
if (i % 2 == 0)
Res += M[0][i] * Det(N - 1, M1);
else
Res -= M[0][i] * Det(N - 1, M1);
}
return Res;
}
}

int main(int argc, char* argv[])
{
int Op = Det(4, A);
cout << Op << endl;
getch();
return 0;
}

Матрица задается в коде в переменной A. Но вы легко можете реализовать ее ввод с клавиатуры или из файла. Далее реализована рекурсивная функция Det, которая принимает в качестве параметров размер матрицы и указатель на саму матрицу. Функция возвращает целое число - значение определителя. Удачи!
-------------------------------------------------------------
Секреты поискового продвижения сайтов обсуждаются здесь seo форум. Узнай как повысить посещаемость у профессионалов.

Выгоднее всего купить Nokia можно в интернет-магазине koopim.com.

Бездепозитный бонус ваш шанс начать карьеру в онлайн покере, играем в покер бесплатно. Про
бездепозитный бонус на full tilt узнайте на сайте.

Ваш отзыв

Сортировка вставками на Паскале

Разберем простой алгоритм сортировки методом вставки. Хотя существуют и более эффективные алгоритмы сортировок, этот метод достаточно прост в реализации и не треует оперативной памяти даже под стек.


Program SortByVstavka;
var A: array of Integer;
i, j, key: Integer;
begin
//Заполняем массив A
for i := 0 to Length(A) - 1 do
begin
    key := A[i];
    j := i - 1;
    while (j >= 0) and (A[j] > key) do
    begin
        A[j + 1] := A[j];
        j := j - 1;
        A[j + 1] := key;
    end;
end;
End.

Описать алгоритм можно следующим образом. На каждом шаге алгоритма мы выбираем один из элементов входных данных и вставляем его на нужную позицию в уже отсортированном списке, до тех пор пока набор входных данных не будет исчерпан. Метод выбора очередного элемента из исходного массива произволен; может использоваться практически любой алгоритм выбора.
----------------------------------------------------
Неординарные фотографии из Питера, сделанные настоящими мастерами своего дела, вы сможете найти на сайте fotoblogger.ru.

Пришло время планировать новогодние выходные. Приобрести новогодние туры в подмосковье Вы сможете на сайте www.podmoskovie.net.

Любые фотоработы выполнят профессионалы. Фотостудия предлагает услугу "Приключение для двоих". Подробности на сайте.

Ваш отзыв