In computer science, a binary tree is a tree data structure in which each node has at most two children. Typically the first node is known as the parent and the child nodes are called left and right. In type theory, a binary tree with nodes of type A is defined inductively as TA = μα. 1 + A × α × α. Binary trees are commonly used to implement binary search trees and binary heaps.

Graph theorists use the following definition: A binary tree is a connected acyclic graph such that the degree of each vertex is no more than 3. It can be shown that in any binary tree, there are exactly two more nodes of degree one than there are of degree three, but there can be any number of nodes of degree two. A rooted binary tree is such a graph that has one of its vertices of degree no more than 2 singled out as the root.

With the root thus chosen, each vertex will have a uniquely defined parent, and up to two children; however, so far there is insufficient information to distinguish a left or right child. If we drop the connectedness requirement, allowing multiple connected components in the graph, we call such a structure a forest.

Another way of defining binary trees is a recursive definition on directed graphs. A binary tree is either:

  • A single vertex.
  • A graph formed by taking two binary trees, adding a vertex, and adding an edge directed from the new vertex to the root of each binary tree.

This also does not establish the order of children, but does fix a specific root node.

The groupings of pairs of nodes in a tree can be represented as pairs of letters, surrounded by parenthesis. Thus, (a b) denotes the binary tree whose left subtree is a and whose right subtree is b. Strings of balanced pairs of parenthesis may therefore be used to denote binary trees in general. The set of all possible strings consisting entirely of balanced parentheses is known as the Dyck language.

Given n nodes, the total number of ways in which these nodes can be arranged into a binary tree is given by the Catalan number Cn. For example, C2 = 2 declares that (a 0) and (0 a) are the only binary trees possible that have two nodes, and C3 = 5 declares that ((a 0) 0), (0 a) 0), (0 (a 0)), (0 (0 a)), and (a b) are the only five binary trees possible that have 3 nodes. Here 0 represents a subtree that is not present.
The ability to represent binary trees as strings of symbols and parentheses implies that binary trees can represent the elements of a magma. Conversely, the set of all possible binary trees, together with the natural operation of attaching trees to one-another, forms a magma, the free magma.

Given a string representing a binary tree, the operators to obtain the left and right subtrees are sometimes referred to as car and cdr.

SOURCE:


http://docs.google.com/Doc?docid=0AR5w-4kQFP95ZGZtN2hkbTlfMWdoMnRud2N0&hl=en


OUTPUT:


Inorder
1 2 4 8 9 10 12 13 15
preorder
8 4 1 2 12 9 10 15 13
postorder
2 1 4 10 9 13 15 12 8

9 4 1 2 12 10 15 13


Show an Animation about Binary Tree by clicking link below

http://www.cs.jhu.edu/~goodrich/dsa/trees/btree.html

And here is a COOL APPLET AVL TREE's, check this out..

http://webpages.ull.es/users/jriera/Docencia/AVL/AVL%20tree%20applet.htm







Case:
Click here to see a NORMALIZATION CASE

Completion:

Create table SUPPLY

mysql> create table supply (
-> kode_supply varchar(3) not null primary key,
-> nama_supply varchar(50));
Query OK, 0 rows affected (0.03 sec)


Create table BARANG

mysql> create table barang (
-> kode_brg varchar(3) not null primary key,
-> nama_brg varchar(100));
Query OK, 0 rows affected (0.03 sec)


Create table PRIMARY FAKTUR

mysql> create table primary_faktur
-> (no_fak int(3) not null primary key,
-> tanggal date,
-> jatuh_tempo date,
-> kode_supply varchar(3),
-> foreign key (kode_supply) references
-> supply(kode_supply) on update cascade);
Query OK, 0 rows affected (0.03 sec)


Create table DETIL FAKTUR

mysql> create table detil_faktur (
-> no_fak int(3),
-> kode_brg varchar(3),
-> kuantitas int(3),
-> foreign key (no_fak) references primary_faktur(no_fak) on update cascade,
-> foreign key (kode_brg) references barang(kode_brg) on update cascade);
Query OK, 0 rows affected (0.05 sec)


TO BE CONTINUED..







SOURCE:

program QuickSort;
uses WinCrt;
type Array100 = array [1..100] of integer;
var
Data: Array100;
DataCount: Integer;

procedure InputData(var d: Array100; var c: Integer);
var
Code, k: Integer;
i: String;
begin
k := 1;

Writeln('Quick Sort');
Writeln('-----------');
Writeln;

repeat
Write('Masukkan angka ke-',k,' : ');readln(i);
if(i <> '') then
begin
Val(i,d[k],Code);
if(Code <> 0) then
d[k] := 0;
end;
Inc(k);
until (k > 100) or (i = '');
c := k - 2;
end;

procedure Swap(var a,b: Integer);
var
t: Integer;
begin
t := a;
a := b;
b := t;
end;

procedure Tampil(d: Array100; c: Integer);
var
i: Integer;
begin
for i:=1 to c do
Write(d[i]:5);
Writeln;
end;

procedure Sorting(var d: Array100; a,b: Integer);
var
a1, b1, pivot: Integer;
begin
a1:=a;
b1:=b;
pivot:= d[(a+b) div 2];

repeat
while(d[a1] < pivot) do Inc(a1); while(d[b1] > pivot) do
Dec(b1);
if (a1<=b1) then begin Swap(d[a1], d[b1]); Inc(a1); Dec(b1); end; until (a1 > b1);

Tampil(d,b);

if (a < b1) then Sorting(d,a,b1); if (a1 < b) then Sorting(d,a1,b); end; begin InputData(Data, DataCount); Writeln; Writeln('Sebelum diurutkan'); Tampil(Data,DataCount); Sorting(Data,1,DataCount); {data, index terkecil, index terbesar/banyak data} Writeln; Writeln('Sesudah diurutkan'); Tampil(Data,DataCount); end.


OUTPUT:

Quick Sort
-----------

Masukkan angka ke-1 : 9
Masukkan angka ke-2 : 8
Masukkan angka ke-3 : 7
Masukkan angka ke-4 : 6
Masukkan angka ke-5 : 5
Masukkan angka ke-6 : 4
Masukkan angka ke-7 : 3
Masukkan angka ke-8 : 2
Masukkan angka ke-9 : 1
Masukkan angka ke-10 :

Sebelum diurutkan
9 8 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8 9
1 2 3 4
1 2 3 4
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9

Sesudah diurutkan
1 2 3 4 5 6 7 8 9








SOURCE:

program SelectionSort;
uses WinCrt;
type Array100 = array [1..100] of integer;
var
Data: Array100;
DataCount: Integer;

procedure InputData(var d: Array100; var c: Integer);
var
Code, k: Integer;
i: String;
begin
k := 1;

Writeln('Selection Sort');
Writeln('--------------');
Writeln;

repeat
Write('Masukkan angka ke-',k,' : ');readln(i);
if(i <> '') then
begin
Val(i,d[k],Code);
if(Code <> 0) then
d[k] := 0;
end;
Inc(k);
until (k > 100) or (i = '');
c := k - 2;
end;

procedure Swap(var a,b: Integer);
var
t: Integer;
begin
t := a;
a := b;
b := t;
end;

procedure Sorting(var d: Array100; c: Integer);
var
lok, i, j: Integer;
begin
for i:= 1 to c-1 do
begin
lok := i;
for j:=i+1 to c do
if(d[j] < d[lok]) then lok := j; Swap(d[i],d[lok]); end; end; procedure Tampil(d: Array100; c: Integer); var i: Integer; begin for i:=1 to c do Write(d[i]:5); Writeln; end; begin InputData(Data, DataCount); Writeln; Writeln('Sebelum diurutkan'); Tampil(Data,DataCount); Sorting(Data,DataCount); Writeln; Writeln('Sesudah diurutkan'); Tampil(Data,DataCount); end.


OUTPUT:

Selection Sort
--------------

Masukkan angka ke-1 : 9
Masukkan angka ke-2 : 8
Masukkan angka ke-3 : 7
Masukkan angka ke-4 : 6
Masukkan angka ke-5 : 5
Masukkan angka ke-6 : 4
Masukkan angka ke-7 : 3
Masukkan angka ke-8 : 2
Masukkan angka ke-9 : 1
Masukkan angka ke-10 :

Sebelum diurutkan
9 8 7 6 5 4 3 2 1

Sesudah diurutkan
1 2 3 4 5 6 7 8 9








SOURCE:

program SelectionSort;
uses WinCrt;
type Array100 = array [1..100] of integer;
var
Data: Array100;
DataCount: Integer;

procedure InputData(var d: Array100; var c: Integer);
var
Code, k: Integer;
i: String;
begin
k := 1;

Writeln('Selection Sort');
Writeln('--------------');
Writeln;

repeat
Write('Masukkan angka ke-',k,' : ');readln(i);
if(i <> '') then
begin
Val(i,d[k],Code);
if(Code <> 0) then
d[k] := 0;
end;
Inc(k);
until (k > 100) or (i = '');
c := k - 2;
end;

procedure Swap(var a,b: Integer);
var
t: Integer;
begin
t := a;
a := b;
b := t;
end;

procedure Sorting(var d: Array100; c: Integer);
var
lok, i, j: Integer;
begin
for i:= 1 to c-1 do
begin
lok := i;
for j:=i+1 to c do
if(d[j] < d[lok]) then lok := j; Swap(d[i],d[lok]); end; end; procedure Tampil(d: Array100; c: Integer); var i: Integer; begin for i:=1 to c do Write(d[i]:5); Writeln; end; begin InputData(Data, DataCount); Writeln; Writeln('Sebelum diurutkan'); Tampil(Data,DataCount); Sorting(Data,DataCount); Writeln; Writeln('Sesudah diurutkan'); Tampil(Data,DataCount); end.


OUTPUT:

Insertion Sort
--------------

Masukkan angka ke-1 : 9
Masukkan angka ke-2 : 8
Masukkan angka ke-3 : 7
Masukkan angka ke-4 : 6
Masukkan angka ke-5 : 5
Masukkan angka ke-6 : 4
Masukkan angka ke-7 : 3
Masukkan angka ke-8 : 2
Masukkan angka ke-9 : 1
Masukkan angka ke-10 :

Sebelum diurutkan
9 8 7 6 5 4 3 2 1

Sesudah diurutkan
1 2 3 4 5 6 7 8 9







SOURCE:

program BubbleSort;
uses WinCrt;
type Array100 = array [1..100] of integer;
var
Data: Array100;
DataCount: Integer;

procedure InputData(var d: Array100; var c: Integer);
var
Code, k: Integer;
i: String;
begin
k := 1;

Writeln('Bubble Sort');
Writeln('-----------');
Writeln;

repeat
Write('Masukkan angka ke-',k,' : ');readln(i);
if(i <> '') then
begin
Val(i,d[k],Code);
if(Code <> 0) then
d[k] := 0;
end;
Inc(k);
until (k > 100) or (i = '');
c := k - 2;
end;

procedure Swap(var a,b: Integer);
var
t: Integer;
begin
t := a;
a := b;
b := t;
end;

procedure Sorting(var d: Array100; c: Integer);
var
i,j: Integer;
begin
for i:=1 to c-1 do
for j:=c downto i+1 do
if(d[j] < d[j-1]) then Swap(d[j],d[j-1]); end; procedure Tampil(d: Array100; c: Integer); var i: Integer; begin for i:=1 to c do Write(d[i]:5); Writeln; end; begin InputData(Data, DataCount); Writeln; Writeln('Sebelum diurutkan'); Tampil(Data,DataCount); Sorting(Data,DataCount); Writeln; Writeln('Sesudah diurutkan'); Tampil(Data,DataCount); end.


OUTPUT:

Bubble Sort
-----------

Masukkan angka ke-1 : 9
Masukkan angka ke-2 : 8
Masukkan angka ke-3 : 7
Masukkan angka ke-4 : 6
Masukkan angka ke-5 : 5
Masukkan angka ke-6 : 4
Masukkan angka ke-7 : 3
Masukkan angka ke-8 : 2
Masukkan angka ke-9 : 1
Masukkan angka ke-10 :

Sebelum diurutkan
9 8 7 6 5 4 3 2 1

Sesudah diurutkan
1 2 3 4 5 6 7 8 9









In computer science and mathematics, a sorting algorithm is an algorithm that puts elements of a list in a certain order. The most-used orders are numerical order and lexicographical order. Efficient sorting is important to optimizing the use of other algorithms (such as search and merge algorithms) that require sorted lists to work correctly; it is also often useful for canonicalizing data and for producing human-readable output. More formally, the output must satisfy two conditions:

  1. The output is in nondecreasing order (each element is no smaller than the previous element according to the desired total order);
  2. The output is a permutation, or reordering, of the input.

Since the dawn of computing, the sorting problem has attracted a great deal of research, perhaps due to the complexity of solving it efficiently despite its simple, familiar statement. For example, bubble sort was analyzed as early as 1956.[1] Although many consider it a solved problem, useful new sorting algorithms are still being invented (for example, library sort was first published in 2004). Sorting algorithms are prevalent in introductory computer science classes, where the abundance of algorithms for the problem provides a gentle introduction to a variety of core algorithm concepts, such as big O notation, divide and conquer algorithms, data structures, randomized algorithms, best, worst and average case analysis, time-space tradeoffs, and lower bounds.
Classification

Sorting algorithms used in computer science are often classified by:

  • Computational complexity (worst, average and best behaviour) of element comparisons in terms of the size of the list \left( n \right). For typical sorting algorithms good behavior is  \mathcal{O}\left( n \log n\right) and bad behavior is \mathcal{O}\left( n^2 \right). (See Big O notation) Ideal behavior for a sort is \mathcal{O}\left( n \right). Comparison sorts, sort algorithms which only access the list via an abstract key comparison operation, need at least \mathcal{O}\left( n \log n\right)comparisons for most inputs.
  • Computational complexity of swaps (for "in place" algorithms).
  • Memory usage (and use of other computer resources). In particular, some sorting algorithms are "in place". This means that they need only  \mathcal{O}(1) or \mathcal{O}(\log n) memory beyond the items being sorted and they don't need to create auxiliary locations for data to be temporarily stored, as in other sorting algorithms.
  • Recursion. Some algorithms are either recursive or non-recursive, while others may be both (e.g., merge sort).
  • Stability: stable sorting algorithms maintain the relative order of records with equal keys (i.e., values).
  • Whether or not they are a comparison sort. A comparison sort examines the data only by comparing two elements with a comparison operator.
  • General method: insertion, exchange, selection, merging, etc. Exchange sorts include bubble sort and quicksort. Selection sorts include shaker sort and heapsort.
  • Adaptability: Whether or not the presortedness of the input affects the running time. Algorithms that take this into account are known to be adaptive.

FOR EXAMPLE, 
SEE THE JAVA APPLET FOR THE SORTING ALGORITHMS IN LINK BELOW:


http://maven.smith.edu/~thiebaut/java/sort/









No special classes or libraries are used with this application. The complete source resides in the one file above. After downloading, the following should work in any JDK 1.2 compatible compiler:

javac MatrixCalculator.java
java MatrixCalculator

Matrix Calculator Tips/Help


All Matrices must be symmetric (n x n)

Enter Matrix Elements Row by Row seperated by spaces.
Ex. (3x3)


1 2 3
4 5 6
7 8 9


Results will be placed in the C matrix.
The calculation of the determinant, by definition, is based upon a factorial number of calculations with respect to the size of the matrix. ie. a 3x3 matrix would have 6 calculations (3!) to make, whereas a 20x20 matrix would have 2.43 x 10^18 calculations (20!). So instead of brute forcing the calculations, I first do some operations on the matrix, which converts it to a upper triangular matrix, and then calculate the determinant by multipling down the diagonal, since everything below is 0, this will give the determinant.

Floating Points and Accuracies
For some reason computers aren't as accurate as I think they are, probably my calculation techniques. The accuracy of the numbers are probably only to 3 maybe 2 decimal places. If you keep applying operations to matrices and then use the resultant matrix a couple of times, the decimals get out of whack. Calculating an inverse and then multplying the matrix by it, is a good example of this.


Test Some Mathematical Theories
The determinant of A-inverse equals 1 over the determinant of A.
If two rows of matrix A are equal, the determinant of A equals 0.
det(A*B)=det(A)det(B)
A*B does not necessarily equal B*A
The determinant of A-transpose equals the determinant of A.
If the matrix B is constructed by interchanging two rows (columns) in matrix A, then the determinant of B equals the negative determinant of A
You can test, adj(A) = det(A) * inv(A), but this is the theorem I use to calculate the inverse, so it better work.

Mathematics and Linear Algebra Calculating the Determinant
The calculation of the determinant, by definition, is based upon a factorial number of calculations with respect to the size of the matrix. ie. a 3x3 matrix would have 6 calculations (3!), whereas a 20x20 matrix would have 2.43 x 10^18 calculations (20!).

So instead of brute forcing the calculations, I first do some operations on the matrix, which converts it to a upper triangular matrix, and then calculate the determinant by multipling down the diagonal, since everything below is 0, this will give the determinant.

See The Mathematics Behind Them for more information and mathematical explanations on the definitions and calculation techniques.

Click the spoiler below for displaying source-code


SOURCE CODE

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.StringTokenizer;

import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class MatrixCalculator {

private boolean DEBUG = true;

private boolean INFO = true;

private static int max = 100;

private static int decimals = 3;

private JLabel statusBar;

private JTextArea taA, taB, taC;

private int iDF = 0;

private int n = 4;

private static NumberFormat nf;

public Component createComponents() {

/* == MATRIKS == */
taA = new JTextArea();
taB = new JTextArea();
taC = new JTextArea();

JPanel paneMs = new JPanel();
paneMs.setLayout(new BoxLayout(paneMs, BoxLayout.X_AXIS));
paneMs.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
paneMs.add(MatrixPane("Matrix A", taA));
paneMs.add(Box.createRigidArea(new Dimension(10, 0)));
paneMs.add(MatrixPane("Matrix B", taB));
paneMs.add(Box.createRigidArea(new Dimension(10, 0)));
paneMs.add(MatrixPane("Matrix C", taC));

/* == OPERATION BUTTONS == */
JPanel paneBtn = new JPanel();
paneBtn.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
paneBtn.setLayout(new GridLayout(3, 3));
JButton btnApB = new JButton("A + B = C");
JButton btnAmB = new JButton("A * B = C");
JButton btnBmA = new JButton("B * A = C");
JButton btnAdjA = new JButton("adjoint(A) = C");
JButton btnInvA = new JButton("inverse(A) = C");
JButton btnInvB = new JButton("inverse(B) = C");
JButton btnTrnsA = new JButton("transpose(A) = C");
JButton btnDetA = new JButton("determ(A) = C");
JButton btnDetB = new JButton("determ(B) = C");
paneBtn.add(btnApB);
paneBtn.add(btnAmB);
paneBtn.add(btnBmA);
paneBtn.add(btnAdjA);
paneBtn.add(btnInvA);
paneBtn.add(btnInvB);
paneBtn.add(btnTrnsA);
paneBtn.add(btnDetA);
paneBtn.add(btnDetB);

/* == ADD BUTTON Listeners == */
btnApB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
try {
DisplayMatrix(AddMatrix(ReadInMatrix(taA),
ReadInMatrix(taB)), taC);
} catch (Exception e) {
System.err.println("Error: " + e);
}
}
});

btnAmB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
try {
DisplayMatrix(MultiplyMatrix(
ReadInMatrixNotSquare(taA),
ReadInMatrixNotSquare(taB)), taC);
} catch (Exception e) {
System.err.println("Error: " + e);
}
}
});

btnBmA.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
try {
DisplayMatrix(MultiplyMatrix(ReadInMatrixNotSquare(taB),
ReadInMatrixNotSquare(taA)), taC);
} catch (Exception e) {
System.err.println("Error: " + e);
}
}
});

btnInvA.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
try {
DisplayMatrix(Inverse(ReadInMatrix(taA)), taC);
} catch (Exception e) {
System.err.println("Error: " + e);
}
}
});

btnInvB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
try {
DisplayMatrix(Inverse(ReadInMatrix(taB)), taC);
} catch (Exception e) {
System.err.println("Error: " + e);
}
}
});

btnAdjA.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
try {
DisplayMatrix(Adjoint(ReadInMatrix(taA)), taC);
} catch (Exception e) {
System.err.println("Error: " + e);
}
}
});

btnTrnsA.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
try {
DisplayMatrix(Transpose(ReadInMatrixNotSquare(taA)), taC);
} catch (Exception e) {
System.err.println("Error: " + e);
}
}
});

btnDetA.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
try {
taC.setText("Determinant A: "
+ nf.format(Determinant(ReadInMatrix(taA))));
} catch (Exception e) {
System.err.println("Error: " + e);
}
}
});

btnDetB.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
try {
taC.setText("Determinant B: "
+ nf.format(Determinant(ReadInMatrix(taB))));
} catch (Exception e) {
System.err.println("Error: " + e);
}
}
});

/* == MAIN PANEL == */
JPanel pane = new JPanel();
pane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
pane.setLayout(new BoxLayout(pane, BoxLayout.Y_AXIS));
pane.add(paneMs);
pane.add(paneBtn);

JPanel fpane = new JPanel();
fpane.setLayout(new BorderLayout());
fpane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
fpane.add("Center", pane);
statusBar = new JLabel("Ready");
fpane.add("South", statusBar);

return fpane;
}

/* == Setup Invidual Matrix Panes == */
private JPanel MatrixPane(String str, JTextArea ta) {
JScrollPane scrollPane = new JScrollPane(ta);
int size = 200;

scrollPane.setPreferredSize(new Dimension(size, size));
JLabel label = new JLabel(str);
label.setLabelFor(scrollPane);

JPanel pane = new JPanel();
pane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
pane.setLayout(new BoxLayout(pane, BoxLayout.Y_AXIS));
pane.add(label);
pane.add(scrollPane);

return pane;
}

public static void main(String[] args) {
JFrame frame = new JFrame("Matrix Calculator");
frame.setSize(new Dimension(725, 200));
MatrixCalculator app = new MatrixCalculator();

Component contents = app.createComponents();
frame.getContentPane().add(contents, BorderLayout.CENTER);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
frame.pack();
frame.setVisible(true);

nf = NumberFormat.getInstance();
nf.setMinimumFractionDigits(1);
nf.setMaximumFractionDigits(decimals);

}

// ------------------------------------------------------------------------------
// ------------------------------------------------------------------------------



public float[][] ReadInMatrix(JTextArea ta) throws Exception {
if (DEBUG) {
System.out.println("Reading In Matrix");
}

/* == Parse Text Area == */
String rawtext = ta.getText();
String val = "";
int i = 0;
int j = 0;
int[] rsize = new int[max];

/* == Determine Matrix Size/Valid == */
StringTokenizer ts = new StringTokenizer(rawtext, "\n");
while (ts.hasMoreTokens()) {
StringTokenizer ts2 = new StringTokenizer(ts.nextToken());
while (ts2.hasMoreTokens()) {
ts2.nextToken();
j++;
}
rsize[i] = j;
i++;
j = 0;
}
statusBar.setText("Ukuran Matriks: " + i);
if ((DEBUG) || (INFO)) {
System.out.println("Ukuran Matriks: " + i);
}

for (int c = 0; c < i; c++) { if (DEBUG) { System.out.println("i=" + i + " j=" + rsize[c] + " Kolom: " + c); } if (rsize[c] != i) { statusBar.setText("Invalid Matrix. Size Mismatch."); throw new Exception("Invalid Matrix. Size Mismatch."); } } /* == set ukuran matriks == */ n = i; float matrix[][] = new float[n][n]; i = j = 0; val = ""; /* == Actual Parsing == */ StringTokenizer st = new StringTokenizer(rawtext, "\n"); while (st.hasMoreTokens()) { StringTokenizer st2 = new StringTokenizer(st.nextToken()); while (st2.hasMoreTokens()) { val = st2.nextToken(); try { matrix[i][j] = Float.valueOf(val).floatValue(); } catch (Exception exception) { statusBar.setText("Invalid Number Format"); } j++; } i++; j = 0; } if (DEBUG) { System.out.println("Baca Matriks::"); for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { System.out.print("m[" + i + "][" + j + "] = " + matrix[i][j] + " "); } System.out.println(); } } return matrix; } public float[][] ReadInMatrixNotSquare(JTextArea ta) throws Exception { if (DEBUG) { System.out.println("Membaca Matriks"); } /* == Parse Text Area == */ String rawtext = ta.getText(); /* == Determine Matrix Size/Valid == */ StringTokenizer ts = new StringTokenizer(rawtext, "\n"); if (DEBUG) System.out.println("Baris: " + ts.countTokens()); float matrix[][] = new float[ts.countTokens()][]; StringTokenizer st2; int row = 0; int col = 0; //making sure rows are same length int last = -5; int curr = -5; while (ts.hasMoreTokens()) { st2 = new StringTokenizer(ts.nextToken(), " "); last = curr; curr = st2.countTokens(); if(last != -5 && curr!= last) throw new Exception("Baris != length"); if (DEBUG) System.out.println("Kolom: " + st2.countTokens()); matrix[row] = new float[st2.countTokens()]; while (st2.hasMoreElements()) { matrix[row][col++] = Float.parseFloat(st2.nextToken()); } row++; col = 0; } System.out.println(); return matrix; } // -------------------------------------------------------------- // Display Matrix in TextArea // -------------------------------------------------------------- public void DisplayMatrix(float[][] matrix, JTextArea ta) { if (DEBUG) { System.out.println("Displaying Matrix"); } String rstr = ""; String dv = ""; for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[i].length; j++) { dv = nf.format(matrix[i][j]); rstr = rstr.concat(dv + " "); } rstr = rstr.concat("\n"); } ta.setText(rstr); } public float[][] AddMatrix(float[][] a, float[][] b) throws Exception { int tms = a.length; int tmsB = b.length; if (tms != tmsB) { statusBar.setText("Matrix Size Mismatch"); } float matrix[][] = new float[tms][tms]; for (int i = 0; i < tms; i++) for (int j = 0; j < tms; j++) { matrix[i][j] = a[i][j] + b[i][j]; } return matrix; } // -------------------------------------------------------------- public float[][] MultiplyMatrix(float[][] a, float[][] b) throws Exception { if(a[0].length != b.length) throw new Exception("Matrices incompatible for multiplication"); float matrix[][] = new float[a.length][b[0].length]; for (int i = 0; i < a.length; i++) for (int j = 0; j < b[i].length; j++) matrix[i][j] = 0; //cycle through answer matrix for(int i = 0; i < matrix.length; i++){ for(int j = 0; j < matrix[i].length; j++){ matrix[i][j] = calculateRowColumnProduct(a,i,b,j); } } return matrix; } public float calculateRowColumnProduct(float[][] A, int row, float[][] B, int col){ float product = 0; for(int i = 0; i < A[row].length; i++) product +=A[row][i]*B[i][col]; return product; } // -------------------------------------------------------------- public float[][] Transpose(float[][] a) { if (INFO) { System.out.println("Performing Transpose..."); } float m[][] = new float[a[0].length][a.length]; for (int i = 0; i < a.length; i++) for (int j = 0; j < a[i].length; j++) m[j][i] = a[i][j]; return m; } // -------------------------------------------------------------- public float[][] Inverse(float[][] a) throws Exception { // Formula used to Calculate Inverse: // inv(A) = 1/det(A) * adj(A) if (INFO) { System.out.println("Performing Inverse..."); } int tms = a.length; float m[][] = new float[tms][tms]; float mm[][] = Adjoint(a); float det = Determinant(a); float dd = 0; if (det == 0) { statusBar.setText("Determinant = 0, Not Invertible."); if (INFO) { System.out.println("Determinant = 0, Not Invertible."); } } else { dd = 1 / det; } for (int i = 0; i < tms; i++) for (int j = 0; j < tms; j++) { m[i][j] = dd * mm[i][j]; } return m; } // -------------------------------------------------------------- public float[][] Adjoint(float[][] a) throws Exception { if (INFO) { System.out.println("Performing Adjoint..."); } int tms = a.length; float m[][] = new float[tms][tms]; int ii, jj, ia, ja; float det; for (int i = 0; i < tms; i++) for (int j = 0; j < tms; j++) { ia = ja = 0; float ap[][] = new float[tms - 1][tms - 1]; for (ii = 0; ii < tms; ii++) { for (jj = 0; jj < tms; jj++) { if ((ii != i) && (jj != j)) { ap[ia][ja] = a[ii][jj]; ja++; } } if ((ii != i) && (jj != j)) { ia++; } ja = 0; } det = Determinant(ap); m[i][j] = (float) Math.pow(-1, i + j) * det; } m = Transpose(m); return m; } // -------------------------------------------------------------- public float[][] UpperTriangle(float[][] m) { if (INFO) { System.out.println("Converting to Upper Triangle..."); } float f1 = 0; float temp = 0; int tms = m.length; // get This Matrix Size (could be smaller than // global) int v = 1; iDF = 1; for (int col = 0; col < tms - 1; col++) { for (int row = col + 1; row < tms; row++) { v = 1; outahere: while (m[col][col] == 0) // check if 0 in diagonal { // if so switch until not if (col + v >= tms) // check if switched all rows
{
iDF = 0;
break outahere;
} else {
for (int c = 0; c < tms; c++) { temp = m[col][c]; m[col][c] = m[col + v][c]; // switch rows m[col + v][c] = temp; } v++; // count row switchs iDF = iDF * -1; // each switch changes determinant // factor } } if (m[col][col] != 0) { if (DEBUG) { System.out.println("tms = " + tms + " col = " + col + " row = " + row); } try { f1 = (-1) * m[row][col] / m[col][col]; for (int i = col; i < tms; i++) { m[row][i] = f1 * m[col][i] + m[row][i]; } } catch (Exception e) { System.out.println("Still Here!!!"); } } } } return m; } // -------------------------------------------------------------- public float Determinant(float[][] matrix) { if (INFO) { System.out.println("Getting Determinant..."); } int tms = matrix.length; float det = 1; matrix = UpperTriangle(matrix); for (int i = 0; i < tms; i++) { det = det * matrix[i][i]; } // multiply down diagonal det = det * iDF; // adjust w/ determinant factor if (INFO) { System.out.println("Determinant: " + det); } return det; } }


FOR DOWNLOAD: CLICK HERE












Things you should already have:
  • Original Warcraft and The Frozen Throne
  • One Dota map: 6.62b or higher for testing

Official 1.24b patch download section
Others 1.24b section:
WARNING FOR MAC USERS: Any Mac user wishing to patch should get the 1.24a patch and then connect to battle.net for the final upgrade.

How to Install the patch:
  • If everything is fine, then just press BattleNet button, it will be automatic
  • If you downloaded it, just double click it.

How to check what version you have:
  • Just check the number under your Quit button. It should be 1.24.1.6374


Solving problems:

The most common problems of all is "Missing install path" problem. This problem is (99%) caused because game wasn't Installed, because it was only copied from another computer. The game is missing registry entries, thus, patch can't update. Example of "Missing path error"



First you need to download War3 Registry fix program. Click to Download. Unpack it, and just double click it. You should get this screen. Now click the Fix Reign of Chaos.



Find your Warcraft 3 folder. Its ussually at C:\Program Files\Warcraft III. At my example, its at C:\Warcraft III. When you find it, mark it untill that + becomes -. Now at that bar above, path should be correct, but program generates DIABLO2 folder. DELETE IT! That Diablo folder is program mistake. Delete it with Backspace or Delete button untill its gone like this:

1.


2.


Click the OK button and then click Yes like this:



Now, go to first page of program again and do everything again for Frozen Throne!

When you finaly finished this fixing, go to Warcraft 3 The Frozen Throne game. Just enter it, it doesn't matter what patch you have. When you enter the game, just Quit the game. You need this part to check if you did everything correct. Do this part no matter what!

If everything worked well, now you can upgrade to 1.24b without any errors! Use 6.62b map for testing.

Other problems
  • If you can't download the patch, try again, blizzard servers can be full!
  • If the 1.24b patch is less than 56.05MB, then download it again, maybe it was broke during download.
  • If you have specific problem which isn't in this guide, post it in this topic!

Disclaimer!
  • No talking about cracks, keygens or pirated software!
  • No Version Switcher discussion, check Dota Tools if you need it.
  • Only 6.62b and above are allowed. No discussion about 6.61c and below.
  • No Garena problems, please. I can't help you there, check Garena Support

If you have any ideas how to make this guide better, post them here. Remember, this isn't the only way, but it looks its the most newbie friendly. There are other ways with Regedit, but I don't find it easy for people which need small and helpfull programs, not registry files, and editing path at their own risk.

Attached Files
File Type: rar
W3Fixer.rar (482.1 KB, 23232 views)








All in One Warcraft Version Switcher. Yeah, it's available now. Currently, there are 7 Warcraft 3 TFT versions file are available, Warcraft Patch 1.20e, 1.21, 1.21b, 1.22, 1.23, 1.24a & 1.24b. You can download any Warcraft 3 Patch version Switcher file you want to use. Check the download links & guide.




Steps:

1. Download standalone Warcraft Version Switcher from the link below and extract it.

Download Warcraft-Version-Switcher.rar (617KB)

2. Download the Warcraft 3 version switcher file(s) you want to use with Version Switcher.

Warcraft 1.20 Patch File:
TFT Version 1.20

Warcraft 1.21 Patch File:
TFT Version 1.21

Warcraft 1.21b Patch File:
TFT Version 1.21b

Warcraft 1.22 Patch File:
TFT Version 1.22

Warcraft 1.23 Patch File:
TFT Version 1.23

Warcraft 1.24 Patch File:
TFT Version 1.24

Warcraft 1.24b Patch File:
TFT Version 1.24b

3. After Downloading the patch version file(s), DO NOT EXTRACT THEM. Just copy the files and paste in your "wvs" folder of Warcraft Version Switcher.

4. Now run wvs.exe & you're done.







INTRODUCTION

IPB Image
Summon Nightcrawler

Disfar is came from the tribe of the Murlocs from the lands of Felwood. The Undead Legions conquered their habitats and turned them into bases. The nightcrawler is the only one who have escaped in the terror of the lich king's army. He joined the Sentinel for him to have revenge on the death of his tribe and family. The nightcrawler can turn invisible when night, allowing him to spy his enemies. He can throw flashbangs in a certain range to blind his enemies and prevent them from attacking. The Scourge shall know the true anger of the Nightcrawler.

Strength - 17 +2.00
Agility - 24 +2.80(Main Attribute)
Intelligence - 18 +1.55

Learns Nightclawler's Flashbang, Corrosive Scales, Night Crawl and Death Stab

Attack range of 100
Movement speed of 300

_____________________________________________________________________________
HERO INFORMATION


Alliance: Sentinel
Theme: Nightcrawlers
Role: Killer

IPB Image
Disfal, the Nightcrawler

Starting Hitpoints:150 + (Strength * 19); 150 + (17 * 19) = 473
Starting Mana:Intelligence * 13; 18 * 13 = 234
Starting Damage: 39-50
Starting Armor:=Agility/7; 24/7 = 3.4

_____________________________________________________________________________
HERO ABILITIES

IPB Image

Nightcrawler's Flashbang

The night crawler will throws a flashbang in an area to damage, slow enemy units by 35% and to prevent them from attacking. The flashbang last for 2.5 seconds.

Level 1 - Deals 120 damage and has a 200 AOE.
Level 2 - Deals 200 damage and has a 240 AOE.
Level 3 - Deals 280 damage and has a 270 AOE.
Level 4 - Deals 330 damage and has a 300 AOE.

Cooldown: 30 seconds
Mana cost: 100/110/120/130

The casting time is 1 second.
The casting range is 400


IPB Image

Corrosive Scales


Allows the Nightcrawler to be scaly. Gives a chance to reflect the percentage of the received damage of the nightcrawler in an area near him.

Level 1 - 10% chance to reflect the 120% of the nightcrawler's received damage.
Level 2 - 10% chance to reflect the 150% of the nightcrawler's received damage.
Level 3 - 10% chance to reflect the 180% of the nightcrawler's received damage.
Level 4 - 10% chance to reflect the 200% of the nightcrawler's received damage.

Passive

IPB Image

Night Crawl

The nightcrawler will become permanently invisible when night. The invisible will removed when the nightcrawler attacks, use a skill or when day comes.

Level 1 - The nightcrawler becomes invisible when night. Has 8 seconds fade time.
Level 2 - The nightcrawler becomes invisible when night. Has 7 seconds fade time.
Level 3 - The nightcrawler becomes invisible when night. Has 6 seconds fade time.
Level 4 - The nightcrawler becomes invisible when night. Has 5 seconds fade time.

Passive

IPB Image

Death Stab


When the nightcrawler attacks in front it will deal a bonus damage but when it attacks from the rear, the attacked one will be slowed by 30%.

Level 1 - adds a bonus 25% of damage.
Level 2 - adds a bonus 50% of damage.
Level 3 - adds a bonus 75% of damage.

Orb Effects do not stack

Hero Combo
_____________________________________________________________________________

IPB Image + IPB Image
When you are invisible can easily use the skill, Nightcrawler's Flasbang to your enemies.
IPB Image + IPB Image
Flashbang can slow and prevent the attack of enemies. In this state, you can deal a bonus damage when you attack in front.








Partition Wizard Home Edition (PWHE) is a free partition manager designed by MT Solution Ltd. It supports 32/64 bit Windows Operating System including Windows XP, Windows Vista , Windows 2000 Professional and Windows 7.

Home users can perform complicated partition operations by using this powerful but free partition manager to manage their hard disk partition such as Resizing partitions, Copying partitions, Create partition, Delete partition, Format partition, Convert partition, Explore partition, Hide partition, Change drive letter, Set active partition and Partition Recovery.


Size     : 5.54 MB
Platform : Windows
License  : Freeware
Updated  : 20 Jul, 2009


Click here for download pwhe-setup.exe free (5.54 MB)







A keygen (an abbreviated form of "key generator") is a small program that will generate valid CD keys or serial/registration numbers for a piece of software. These are made available by software cracking groups for free download on various websites dedicated to software piracy. In some countries, the use of keygens to activate software without purchasing a genuine code is unlawful.








How registration key generators work

The author of a keygen typically uses a disassembler to look at the raw assembly code of the targeted program, checking either the software itself or the installer. Once access has been obtained to the program's code, the location of the subroutine(s) responsible for verifying that the key entered is valid are found. Using this knowledge, the algorithm may be reverse engineered to generate valid keys, which is then incorporated into the keygen.

With weaker serial protection schemes a complex reverse is not required as the key-checking code itself in the original application can be effectively copied and incorporated into a keygen. Weaker schemes sometimes internally generate a correct key inside the original application for comparison purposes (to determine whether the entered key is correct).

Some keygens use a brute force approach or brute force hybrid approach to creating valid keys. In these instances, rather than produce an exact reverse of the key check algorithm, the attacker uses a search technique, testing many possible combinations per second against the key validation check until a given combination produces a valid key.

Sometimes, keygens have code incorporated into the keygen to change the written code of a program in order for the code that is given via the keygen to work, but this is not typically done for a keygen, as it is considered 'impure' when a crack must be used in conjunction with a keygen; true keygens are considered as such when they generate valid keys and do not require an additional 'crack' i.e. modification to the original application code for generated keys to be accepted.

For request a keygen please email me use this format:
Subject: ReqKeygen
Message Body: Name of app/game/warez what you need the keygen







Short Message Service (SMS) is a communication service standardized in the GSM mobile communication system, using standardized communications protocols allowing the interchange of short text messages between mobile telephone devices. SMS text messaging is the most widely used data application on the planet, with 2.4 billion active users, or 74% of all mobile phone subscribers sending and receiving text messages on their phones.[citation needed] The SMS technology has facilitated the development and growth of text messaging. The connection between the phenomenon of text messaging and the underlying technology is so great that in parts of the world the term "SMS" is used as a synonym for a text message or the act of sending a text message, even when a different protocol is being used.

FOR FREE SMS, CLICK THIS LINK for 10 sms per DAY 

OR THIS LINK for 20 sms per DAY 



























Download Here :  
http://www.4shared.com/file/141981063/81333a4d/UDF.html 

Or using this: 
http://d60pc.com/redirectdownload/Anti-DeepFreeze.html 





Or This





















Download Here :
4SHARED
http://www.4shared.com/file/144249041/65b02369/undeep.html 
RAPIDSHARE
http://rapidshare.com/files/298875286/undeep.zip 
MIRROR
http://downloads.alsyundawy.org/?dir=appz/UnDeepFreeZeR 








Have you ever thought that a Simple USB Drive can be used as a Destructive Tool for Hacking Passwords? Today I will give you the right tools.

As we all know, Windows stores most of the passwords which are used on a daily basis, including instant messenger passwords such as MSN, Yahoo, AOL, Windows messenger etc. Along with these, Windows also stores passwords of Outlook Express, SMTP, POP, FTP accounts and auto-complete passwords of many browsers like IE and Firefox. There exists many tools for recovering these passswords from their stored places.

Using these tools and an USB pendrive hack your friends passwords. Luckily for you i put every thing together for n00bs.

VIDEO:

http://www.youtube.com/watch?v=DRpkNjsR4Aw


DOWNLOAD:

http://hotfile.com/dl/15570241/4d7a997/USB_Password_Hack.rar.html


NB: Files are available in RAR format with passwords. If you want to know the password, please comment on this blog and leave your email address. I will send your password to your email address.







SCIENCEDIRECT
target :
http://science.servepics.com
proxy :
128.42.142.43:3124

Sceinecdirect, Springerlink, Wileyinterscience
target:
http://www.sciencedirectatpassfans.cjb.net
proxy :
ns1.kmu.edu.tw:3128
username/pass :
960499/960499

Other
Ingenta
anand.mooo.com
netlibrary
http://www.netlibraryatpassfans.cjb.net
thieme publishing
http://www.thiemec.cjb.net/ejournals/home.html
Emerald Group Publishing Limited
http://emerald2010.cjb.net

Click the spoiler below for displaying proxy



131.247.2.242:3127
155.98.35.4:3127
128.220.231.3:3127
130.49.221.41:3128
128.31.1.13:3128
129.74.74.15:3128
72.36.112.72:3127
128.252.19.20:3128
129.59.88.180:3124
204.56.0.137:3127
128.135.11.149:3124
129.10.120.193:3128
208.117.131.115:3127
204.8.155.226:3128
128.223.8.111:3127
128.223.8.112:3128
128.223.8.113:3124
128.112.139.80:3127
128.112.139.75:3128
128.112.139.97:3128
171.66.3.181:3124
169.235.24.232:3124
198.133.224.146:3127
137.99.11.87:3124
146.57.249.98:3127
204.85.191.10:3128
204.85.191.11:3128
155.246.12.163:3124
128.135.11.152:3124
128.195.54.161:3128
128.195.54.163:3124
137.99.11.86:3128
164.107.127.13:3128
138.238.250.155:3124
131.247.2.241:3128


Jurnal Perpusnas RI
1. Database Proquest
proquest berisi artikel tentang pertanian, kesehatan, psikologi, ekonomi, sosial dll.
Alamat URL : http://proquest. pnri.go.id
User id: anggota
Password: anggota
2. Database Gale
berisi Teksbook
Alamat URL: http://infotrac.galegroup.com/itweb/idpnri
Password: research
3. Database Westlaw
Berisi masalah Hukum
Alamat URL: http://web2. westlaw.com
Password: 6823415SPDH
Client id: 3 USER







CREATE TABLE TBLPM

mysql> create table tblpm
-> (idtblpm int not null primary key,
-> data char(10))
-> engine=innodb;
Query OK, 0 rows affected (0.08 sec)


CREATE TABLE TBLCASCADE

mysql> create table tblcascade
-> (idtblpm int not null,
-> idtblcascade int not null primary key,
-> data char(10),
-> foreign key (idtblpm) references tblpm(idtblpm) ON UPDATE CASCADE
-> )ENGINE=INNODB;
Query OK, 0 rows affected (0.08 sec)


INSERT VALUE TO TBLPM

mysql> insert into tblpm values
-> ('1','A'),
-> ('2','B'),
-> ('3','C'),
-> ('4','D'),
-> ('5','E');
Query OK, 5 rows affected (0.03 sec)
Records: 5 Duplicates: 0 Warnings: 0


INSERT VALUE TO TBLCASCADE

mysql> insert into tblcascade values
-> ('1','1','A'),
-> ('2','2','B'),
-> ('3','3','C'),
-> ('4','4','D'),
-> ('5','5','E');
Query OK, 5 rows affected (0.06 sec)
Records: 5 Duplicates: 0 Warnings: 0


CHANGING VALUE IN TBPM

mysql> update tblpm set idtblpm='9' where idtblpm='1';
Query OK, 1 row affected (0.03 sec)
Rows matched: 1 Changed: 1 Warnings: 0

SHOW VALUE TBLPM

mysql> select * from tblpm order by data asc;
+---------+------+
| idtblpm | data |
+---------+------+
| 9 | A |
| 2 | B |
| 3 | C |
| 4 | D |
| 5 | E |
+---------+------+
5 rows in set (0.00 sec)


VALUE ON TBLCASCADE HAS BEEN CHANGED TOO

mysql> select * from tblcascade order by data asc;
+---------+--------------+------+
| idtblpm | idtblcascade | data |
+---------+--------------+------+
| 9 | 1 | A |
| 2 | 2 | B |
| 3 | 3 | C |
| 4 | 4 | D |
| 5 | 5 | E |
+---------+--------------+------+
5 rows in set (0.00 sec)
5 rows in set (0.00 sec)